Compare string initialization performance for String Literal and String object.
String Literal
String str = “GeeksForGeeks”;
This is string literal. When you declare string like this, you are actually calling intern() method on String. This method references internal pool of string objects. If there already exists a string value “GeeksForGeeks”, then str will reference of that string and no new String object will be created. Please refer Initialize and Compare Strings in Java for details.
String Object
String str = new String(“GeeksForGeeks”);
This is string object. In this method JVM is forced to create a new string reference, even if “GeeksForGeeks” is in the reference pool.
Therefore, if we compare performance of string literal and string object, string object will always take more time to execute than string literal because it will construct a new string every time it is executed.
Note: Execution time is compiler dependent.
Below is the Java program to compare their performances.
| // Java program to compare performance // of string literal and string object classComparePerformance {     publicstaticvoidmain(String args[])    {            // Initialization time for String        // Literal        longstart1 = System.currentTimeMillis();                 for(inti = 0; i < 10000; i++)        {            String s1 = "GeeksForGeeks";            String s2 = "Welcome";        }                 longend1 = System.currentTimeMillis();        longtotal_time = end1 - start1;         System.out.println("Time taken to execute"+                 " string literal = "+ total_time);         // Initialization time for String        // object        longstart2 = System.currentTimeMillis();                 for(inti = 0; i < 10000; i++)        {            String s3 = newString("GeeksForGeeks");            String s4 = newString("Welcome");        }                 longend2 = System.currentTimeMillis();        longtotal_time1 = end2 - start2;         System.out.println("Time taken to execute"+                   " string object="+ total_time1);    }} | 
Output:
Time taken to execute string literal = 0 Time taken to execute string object = 2


 
                                    







