暮鼓集 行走集
2004年11月10日
在使用MFC开发时,字符串类CString大概是使用最多的类之一,它使得对字符串的处理变得很方便。但是,在一些场合下,CString存在一些明显的效率问题。
如下面的代码:
CString a;
CString b = "Hello world!";
INT n = b.GetLength();
for( INT i = 0; i < n; i++ )
{
a += b[i];
a += TEXT("\r\n");
}
这段代码将字符串b中的每个字符拼接到字符串a,并在后面插入0x0D 0x0A。
当b为”Hello, world!”这样简单的字符串时,程序的执行起来尚无问题。但是若b的字符串很长的时候,就会出现明显的效率问题。我使用自己的计算器做了一系列测试,得出如下的结果
字符串b的大小 执行时间
-------------─
001k 0.01s
010k 0.41s
020k 1.68s
040k 6.02s
080k 33.56s
100k 80.46s