我读过性能方面的字符数组比std :: string更好/更快。但是我个人觉得使用std :: string更容易。
我目前正在编写一些数据库API,这些API会将数据提取/插入数据库中。在这些API中,我想使用std字符串,但是我不确定由于我的选择我会付出多少性能损失。我的API将查询数据库,因此将涉及网络IO。
性能损失是否比网络延迟(〜10 ms)要小得多,因为在这种情况下,我很乐意使用std :: string。
答案 0 :(得分:7)
与几乎所有性能问题一样,答案是要衡量。现代std::string
实现很可能不会成为将数据插入数据库的瓶颈。除非您有profiling data暗示他们是这样,否则最好不要担心。
答案 1 :(得分:3)
您问:
性能损失是否比网络延迟小得多(〜10 ms),因为在那种情况下,我很乐意使用std :: string。
最直接的答案是是。
const char*
与std::string
的快速比较:
const char*
专家:使用较少的空间,因为它不存储字符串的大小。这是我可以拿出atm的唯一优势。性能明智。
std::string
专家:存储字符串的大小,通常更好,因为这意味着不必扫描字符串即可知道大小,等等。
(为避免复制,请使用const std::string&
)
std::string
基本上是:const char*
和size_t
(字符串的大小/长度),如果您忽略所谓的“小字符串优化”(另一个优点-外观自己动手
因此,我不必担心性能(如果一切处理正确)-我的建议:不要再担心性能-进行一些测试和分析,然后查看探查器中显示的内容。话虽这么说-了解“东西”的工作方式和性能是件好事。