Last active
June 16, 2017 12:44
-
-
Save greenlaw110/503441396e833564229e3c86475d3641 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.osgl.util; | |
import org.osgl.$; | |
import org.osgl.util.S; | |
public class SConcatBenchmark { | |
public static void main(String[] args) { | |
final int WARMUP = 1000000; | |
final int LOOP = 100000000; | |
String result = null; | |
String s1 = S.random(4), s2 = S.random(10), s3 = S.random(8); | |
long ts = $.ms(); | |
for (int i = 0; i < WARMUP; ++i) { | |
result = concat1(s1, s2, s3); | |
} | |
for (int i = 0; i < WARMUP; ++i) { | |
result = concat2(s1, s2, s3); | |
} | |
for (int i = 0; i < WARMUP; ++i) { | |
result = concat3(s1, s2, s3); | |
} | |
for (int i = 0; i < WARMUP; ++i) { | |
result = concat4(s1, s2, s3); | |
} | |
System.out.println("it takes " + ($.ms() - ts) + "ms to finish warm up"); | |
ts = $.ms(); | |
for (int i = 0; i < LOOP; ++i) { | |
result = concat1(s1, s2, s3); | |
} | |
long t1 = $.ms() - ts; | |
ts = $.ms(); | |
for (int i = 0; i < LOOP; ++i) { | |
result = concat2(s1, s2, s3); | |
} | |
long t2 = $.ms() - ts; | |
ts = $.ms(); | |
for (int i = 0; i < LOOP; ++i) { | |
result = concat3(s1, s2, s3); | |
} | |
long t3 = $.ms() - ts; | |
ts = $.ms(); | |
for (int i = 0; i < LOOP; ++i) { | |
result = concat4(s1, s2, s3); | |
} | |
long t4 = $.ms() - ts; | |
System.out.println("String +: " + t1); | |
System.out.println("StringBuilder: " + t2); | |
System.out.println("osgl.S.concat: " + t3); | |
System.out.println("osgl.StrBuffer: " + t4); | |
System.out.println(result); | |
} | |
private static String concat1(String s1, String s2, String s3) { | |
return s1 + s2 + s3; | |
} | |
private static String concat2(String s1, String s2, String s3) { | |
return new StringBuilder(s1).append(s2).append(s3).toString(); | |
} | |
private static String concat3(String s1, String s2, String s3) { | |
return S.concat(s1, s2, s3); | |
} | |
private static String concat4(String s1, String s2, String s3) { | |
return S.buffer(s1).a(s2).a(s3).toString(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Running the above code on
osgl-tool-1.2.0
shows the following result: