C/C++字符串拼接测试运行结果:
Release version.
TEST_TIME: 90000
C language memcpy append Used: 0 ms.
string length: 630000
std::string += operator Used: 15 ms.
string length: 630000
std::string append Used: 16 ms.
string length: 630000
std::ostringstream << Used: 16 ms.
string length: 630000
capacity: 630015
size: 0
hava resize(PREALLOCATE_SIZE) std::string += operator Used: 0 ms.
string length: 630000
MFC CString append Used: 63 ms.
string length: 630000
MFC CString operator append Used: 62 ms.
string length: 630000
c string function strcat: Used: 32203 ms.
string length: 630000
---------Statistics informations(sorting ascendent)-------
sort order: 1
item: C language memcpy append
used: 0 ms.
sort order: 2
item: hava resize(PREALLOCATE_SIZE) std::string += operator
used: 0 ms.
sort order: 3
item: std::string += operator
used: 15 ms.
sort order: 4
item: std::string append
used: 16 ms.
sort order: 5
item: std::ostringstream <<
used: 16 ms.
sort order: 6
item: MFC CString operator append
used: 62 ms.
sort order: 7
item: MFC CString append
used: 63 ms.
sort order: 8
item: c string function strcat:
used: 32203 ms.
----------------------------------------------------------
Press any key to continue . . .
Java的测试代码段:
void testJavaStringPerformance() {
final int TEST_TIMES = 90000;
//String
String str = new String();
System.out.println("The testing is running, please wait...");
long start = System.currentTimeMillis();
for (int i=0; i<TEST_TIMES; i++) {
str += "cppmule";
}
long strUsed = System.currentTimeMillis() - start;
System.out.println("strUsed: " + strUsed + " ms.");
//StringBuffer
start = 0;
StringBuffer strBuffer = new StringBuffer();
start = System.currentTimeMillis();
for (int i=0; i<TEST_TIMES; i++) {
strBuffer.append("cppmule");
}
long strBufferUsed = System.currentTimeMillis() - start;
System.out.println("StringBuffer append: " + strBufferUsed + " ms.");
//StringBuilder
start = 0;
StringBuilder strBuilder = new StringBuilder();
start = System.currentTimeMillis();
for (int i=0; i<TEST_TIMES; i++) {
strBuilder.append("cppmule");
}
long strBuilderUsed = System.currentTimeMillis() - start;
System.out.println("StringBuilder append: " + strBuilderUsed + " ms.");
System.out.println("Times: " + TEST_TIMES);
}
Java字符串拼接运行结果:
The testing is running, please wait...
strUsed: 443141 ms.
StringBuffer append: 15 ms.
StringBuilder append: 31 ms.
Times: 90000
Author:
By: cppmule
Email: cppmule@gmail.com