使用
- Concatenation Operator (+)
- String concat method – concat(String str)
- StringBuffer append method – append(String str)
- StringBuilder append method – append(String str)
进行性能测试。
环境 win7 32位, cpu双核2.5GHZ,2G内存。
测试代码如下:
private final static int OUTER_ITERATION = 10; private final static int INNER_ITERATION = 50000; /** * @param args */ public static void main(String[] args) { String addTestStr = ""; String concatTestStr = ""; StringBuffer concatTestSb = null; StringBuilder concatTestSbu = null; for (int outerIndex = 0; outerIndex < OUTER_ITERATION; outerIndex++) { StopWatch stopWatch = new LoggingStopWatch("StringAddConcat"); addTestStr = ""; for (int innerIndex = 0; innerIndex < INNER_ITERATION; innerIndex++) addTestStr += "*"; stopWatch.stop(); } for (int outerIndex = 0; outerIndex < OUTER_ITERATION; outerIndex++) { StopWatch stopWatch = new LoggingStopWatch("StringConcat"); concatTestStr = ""; for (int innerIndex = 0; innerIndex < INNER_ITERATION; innerIndex++) concatTestStr.concat("*"); stopWatch.stop(); } for (int outerIndex = 0; outerIndex < OUTER_ITERATION; outerIndex++) { StopWatch stopWatch = new LoggingStopWatch("StringBufferConcat"); concatTestSb = new StringBuffer(); for (int innerIndex = 0; innerIndex < INNER_ITERATION; innerIndex++) concatTestSb.append("*"); stopWatch.stop(); } for (int outerIndex = 0; outerIndex < OUTER_ITERATION; outerIndex++) { StopWatch stopWatch = new LoggingStopWatch("StringBuilderConcat"); concatTestSbu = new StringBuilder(); for (int innerIndex = 0; innerIndex < INNER_ITERATION; innerIndex++) concatTestSbu.append("*"); stopWatch.stop(); } }
测试结果:
Performance Statistics 2010-04-08 06:16:00 - 2010-04-08 06:16:30
Tag | Avg(ms) | Min | Max | Std Dev | Count |
StringAddConcat | 9355.4 | 7860 | 10046 | 547.7 | 10 |
StringBufferConcat | 3.5 | 0 | 5 | 2.3 | 10 |
StringBuilderConcat | 2.0 | 0 | 5 | 2.4 | 10 |
StringConcat | 3.1 | 0 | 6 | 2.5 | 10 |