Benchmark of Java Try/Catch Block

Posted by hectorg87 on Stack Overflow See other posts from Stack Overflow or by hectorg87
Published on 2012-06-11T10:36:11Z Indexed on 2012/06/11 10:39 UTC
Read the original article Hit count: 160

Filed under:

I know that going into a catch block has some significance cost when executing a program, however, I was wondering if entering a try{} block also had any impact so I started looking for an answer in google with many opinions, but no benchmarking at all. Some answers I found were:

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

However they didn't answer my question with facts, so I decided to try it for myself.

Here's what I did. I have a csv file with this format:

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

where everything after status is optional and will not even have the corresponding ; , so when parsing a validation has to be done to see if the value is there, here's where the try/catch issue came to my mind.

The current code that in inherited in my company does this:

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 = "";
}

and it repeats what it's done for email with uid, name, lastname and promo_code.

and I changed everything to:

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

and in fact it performs faster. When parsing a file that doesn't have the optional columns. Here are the average times:

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

however, here's what confused me and the reason I'm asking: When running the example with values for the optional columns in all 8000 lines of the CSV, the if() version still performs better than the try/catch version, so my question is

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

The average times for this example are:

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

Can somebody explain what's going on here?

Thanks a lot

© Stack Overflow or respective owner

Related posts about java