在使用std :: string和字符数组之间进行选择

时间:2019-06-26 07:48:23

标签: c++

我读过性能方面的字符数组比std :: string更好/更快。但是我个人觉得使用std :: string更容易。

我目前正在编写一些数据库API,这些API会将数据提取/插入数据库中。在这些API中,我想使用std字符串,但是我不确定由于我的选择我会付出多少性能损失。我的API将查询数据库,因此将涉及网络IO。

性能损失是否比网络延迟(〜10 ms)要小得多,因为在这种情况下,我很乐意使用std :: string。

2 个答案:

答案 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(字符串的大小/长度),如果您忽略所谓的“小字符串优化”(另一个优点-外观自己动手

因此,我不必担心性能(如果一切处理正确)-我的建议:不要再担心性能-进行一些测试和分析,然后查看探查器中显示的内容。话虽这么说-了解“东西”的工作方式和性能是件好事。