我的应用程序存在内存问题,包括复制大量字符串,使用与许多哈希表中的键相同的字符串等.我正在寻找我的字符串的基类,这使得它非常有效.
我希望:
我的平台是Linux上的g ++(但这不太重要).
你知道这样的图书馆吗?
我特别感兴趣的是窗户,mingw.
谢谢.
更新:首先,我认为每个人都熟悉字符串实习. http://en.wikipedia.org/wiki/String_interning
其次,我的问题很详细:我为练习敲了一个字符串课.没有什么花哨的你知道,我只是在课堂上存储大小和char*.
我使用memcpy进行分配.
当我这样做来测量std :: string和我的字符串类的赋值速度时:
string test1 = " 65 kb text ", test2;
for(int i=0; i<1000000; i++)
{
test2 = test1;
}
mystring test3 = "65 kb text", test4;
for (int i=0; i<1000000; i++)
{
test4 = test3
}
Run Code Online (Sandbox Code Playgroud)
std :: string是一个很大的赢家.我在赋值运算符(在我的类中)中没有做任何事情,但是用memcpy复制.我甚至没有使用"new"运算符创建一个新数组,因为我检查大小是否相等,并且只在需要时请求new.怎么会?
对于小字符串,没有问题.我看不出如何能的std :: string赋值比memcpy的速度更快,我敢打赌,它使用它太在后台,或类似的东西,所以这就是为什么我问实习.
Update2:通过单个字符赋值修改循环,如下所示:test2 [15] = 78,我避免了std :: string的copy-on-write效果.现在两个代码完全相同(好的,有1-2%的差异,但这可以忽略不计).因此,如果我没有完全弄错,mingw std :: string必须使用COW.
感谢大家的帮助.