Тест Java Try / Catch Block

Я знаю, что вход в блок catch требует значительных затрат при выполнении программы, однако мне было интересно, оказал ли влияние ввод блока try {}, поэтому я начал искать в google ответ со многими мнениями, но без сравнения в все. Некоторые ответы, которые я нашел, были:

Java try/catch performance, is it recommended to keep what is inside the try clause to a minimum? Try Catch Performance Java Java try catch blocks

Однако они не ответили на мой вопрос фактами, поэтому я решил попробовать это для себя.

Вот что я сделал. У меня есть CSV-файл с этим форматом:

host;ip;number;date;status;email;uid;name;lastname;promo_code;

где все после статуса является необязательным и даже не будет иметь соответствующего; Таким образом, при синтаксическом анализе необходимо выполнить проверку, чтобы увидеть, есть ли значение, вот где мне пришла проблема try / catch.

Текущий код, который я унаследовал в моей компании, делает это:

StringTokenizer st=new StringTokenizer(line,";");  
String host = st.nextToken();
String ip = st.nextToken();
String number = st.nextToken();
String date = st.nextToken();
String status = st.nextToken();                             
String email = "";
try{
    email = st.nextToken();
}catch(NoSuchElementException e){
    email = "";
}

и он повторяет то, что он сделал для электронной почты с uid, name, фамилией и промо-кодом.

и я изменил все на:

if(st.hasMoreTokens()){
    email = st.nextToken();
}

и на самом деле это работает быстрее. При разборе файла, который не имеет дополнительных столбцов. Вот среднее время:

 --- Trying:122 milliseconds
 --- Checking:33 milliseconds

однако вот что смутило меня и причину, по которой я спрашиваю: при запуске примера со значениями для необязательных столбцов во всех 8000 строках CSV версия if () по-прежнему работает лучше, чем версия try / catch, поэтому мой вопрос

Does really the try block does not have any performance impact on my code?

Среднее время для этого примера:

--- Trying:105 milliseconds
--- Checking:43 milliseconds

Может кто-нибудь объяснить, что здесь происходит?

большое спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос