While developing any kind of application we want that application to be as fast as we can. But it is not an easy task to achieve. Making a fast application is easy if the application is not complex. With complexity applications tends to slow down and one of the major reason is - System.out.print() of java.
Some of you may know this fact or some of you not. To understand how costly is this SOP . Let's try to build a simple method to test the speed.
But when I commented the SOP line and save data to the file the following output was arrived.
public static void main(String[] s) throws FileNotFoundException, IOException { String count = ""; long total=0; for (int j = 0; j < 20; j++) { long temp=calculateCostofSOP(); count = count + String.valueOf(temp) + " "; total=total+temp; } System.out.println(count); System.out.println(total); }This loop iterator 20 times to have a clear picture of COST of SOP. Let's now have our implementation of calculateCostofSOP
public static long calculateCostofSOP() throws FileNotFoundException, IOException { FileReader fr = new FileReader("C:\\gre"); PrintWriter pw=new PrintWriter("C:\\grew"); BufferedReader bfr = new BufferedReader(fr); String line = ""; StringBuilder sb = new StringBuilder(); long sv = System.currentTimeMillis(); while ((line = bfr.readLine()) != null) { line = line.replace("\t", "="); sb.append(line + "\n"); System.out.println(line); //comment this line while we use file out // pw.write(line + "\n"); //comment this line while we use console out } pw.close(); bfr.close(); FileWriter f = new FileWriter("C:\\gre"); BufferedWriter buffW = new BufferedWriter(f); buffW.write(sb.toString()); buffW.close(); return (System.currentTimeMillis() - sv); }Now look at the output we received. It took whopping 109028 milliseconds. The file "gre" was not too long. It contains data from here https://quizlet.com/47571/export.
But when I commented the SOP line and save data to the file the following output was arrived.
//System.out.println(line); pw.write(line + "\n");
Now, it took only 1062 milliseconds.
Try it by yourself and see the results. By the above experiment we reach to following conclusion.- Try to avoid SOPs as much as you can
- Never try to put SOPs inside any loop.
- In prod applications use ADFLogger or log4j for the better performance.
- If possible concat the String inside the loop and SOP it outside the loop.In my case it took-45216 ms
No comments:
Post a Comment