while(i<40000000){ //四千万次 String stamp = new String(aLineBytes, 0, len, StandardCharsets.UTF_8); String methodName = new String(aLineBytes, s1, len1, StandardCharsets.UTF_8); String value = new String(aLineBytes, s1, len2, StandardCharsets.UTF_8 } // run time 9s~10s
version_1
1 2 3 4 5 6
while(i<40000000){ //四千万次 String stamp = new String(aLineBytes, 0, len); String methodName = new String(aLineBytes, s1, len1); String value = new String(aLineBytes, s1, len2); } // run time 8s~9s,因为version_0中每次都会创建新的StringDecoder对象影响性能
version_2
1 2 3 4 5 6 7 8 9
String stamp = null; String methodName = null; String value = null; while(i<40000000){ //四千万次 stamp = new String(aLineBytes, 0, len); methodName = new String(aLineBytes, s1, len1); value = new String(aLineBytes, s1, len2); } //run time 8s, 相比version_1 极大的减少了内存中引用的个数