- 论坛徽章:
- 9
|
本帖最后由 wlmqgzm 于 2017-04-21 19:51 编辑
我觉得可能的一个原因是: C/C++底层库对性能影响比较大。
最近在做的一个高性能KV数据库haisql_memcache,4核CPU下大约40万QPS, 性能从最早的10多万QPS到现在的40万QPS, 主体的代码变化不大, 主要是做了很多c/C++底层库,现在已经积累了超过1万行C/C++库,性能不断的提升。
前一阶段完成替换的库是:shared_ptr 和 unique_ptr, 自研库 性能比std库提升了一倍多。
已经替换了一批C/C++的标准库中过于陈旧的内容。如果新的模块上在算法方面没有创新,那么重写是毫无意义的, -O3优化下,同样算法的模块,性能几乎不会有变化。
目前该KV数据库已经比 memcache 快70%, 要知道我的网络层是层层封装的Boost:asio, 内存是动态申请的(memcache的内存是预分配的),单核也比Redis单核性能更快。
我的代码中全部是C++的,大量使用std::string, std::vector等各种C++对象, 除库代码外,只有到5000行代码,性能超越C语言编写的,号称经典的memcache,确实是非常不容易,也说明了C++基础库对于性能和研发的重大影响。
也许有人会说 : C/C++库都是经典, 不不可超越的, 那么, 这里也是一个例子,即使是memcpy这样看上去无法优化的库代码,其实也是有办法优化的。怎样写出一个更快的 memset/memcpy ? - 知乎用户的回答 - 知乎 https://www.zhihu.com/question/35172305/answer/61584927
|
|