Тест 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
Может кто-нибудь объяснить, что здесь происходит?
большое спасибо