我的目标是找到最快的C++库,用于将int转换为字符串,反之亦然,以及解析.
任何尝试过C++性能的人都会很快意识到STL的字符串类与STL int算术运算相比具有可怕的性能.
我的3.3 GHz Intel,GCC,CentOS 5.5机器的一些示例基准测试:
memcpy 0.004000 microsec/op
atoi 0.025000 microsec/op
atof 0.133000 microsec/op
strtod 0.133000 microsec/op
atof 0.135108 microsec/op
(char) uchar 0.001801 microsec/op
(char) ushort 0.001801 microsec/op
cache accs 0.010505 microsec/op
maplookup 0.128534 microsec/op
add_int 0.002456 microsec/op
Run Code Online (Sandbox Code Playgroud)
您可以快速看到字符串操作将成为任何高速消息传递应用程序的瓶颈.
我找到了其他用于高性能字符串的库(列出),但我写的是希望有人遇到类似的困难并且已经达成了一些解决方案,可能包括编写自己的字符串类.
在C++中,程序可以传递引用,而不是值传递给函数.
void incrementInt(int &x)
{
++x;
}
Run Code Online (Sandbox Code Playgroud)
OCaml是否提供相同的功能?
说我有一个产生2个线程的进程
第一个线程在UDP端口上监听数据包事件的紧密循环.第二个线程是接收此UDP数据包中包含的字节并解析它/做东西.
谁能推荐比使用linux消息队列更快的方法?我认为它们很慢,因为它们在写入队列时复制字节并在从队列中读取时再次复制它们
我知道zeromq库,但有没有一个光滑的方式来做到这一点没有这个开销?我意识到我可以在两个线程之间使用tcp/ip套接字进行简单的排队通信但是有更快的方法吗?
我想也许内存中的环形缓冲区是在线程和用于控制指向最近更新元素的指针的互斥体之间共享的?
任何想法在这里?