使用STD :: String和字符数组之间的选择
Choice between using std::string and character array
我已经阅读了性能角色数组比std :: string更好/更快。但是我个人发现使用std ::字符串更加容易。
我目前正在编写一些数据库API,这些数据库将在数据库中获取/插入数据。在这些API中,我想使用STD字符串,但是我不确定由于我的选择,我会付出多少惩罚。我的API会查询数据库,因此将涉及网络IO。
的性能惩罚要比网络延迟(〜10 ms(要小得多,因为在这种情况下,我很乐意使用std :: string。
与几乎所有绩效问题一样,答案是要测量。现代std::string
实现很可能不会成为将数据插入数据库的瓶颈。直到您进行了表明它们的分析数据,您可能最好不要担心。
您问:
的性能罚款要比网络延迟少得多(〜10 MS(,因为在这种情况下,我很乐意使用std :: string。
钝答案是是。
const char*
与std::string
的快速比较:
const char*
PROS :
使用较小的空间,因为它不存储字符串的大小。这是我可以提出的唯一优势。明智的性能。
std::string
Pros :
存储字符串的大小,这通常会更好,因为这意味着不必扫描字符串才能知道大小,等等...(并避免副本使用const std::string&
(
std::string
是基本的:如果您忽略所谓的"小字符串优化"(另一个优势 - 您自己查找(,则const char*
和CC_8(字符串的大小/lenght((字符串的大小/lenght(
因此,我不必担心性能(如果一切都正确处理( - 我的建议:不要担心性能 - 进行一些测试和分析,看看Profiler中显示的内容。话虽如此 - 知道"东西"是如何工作和执行的。
相关文章:
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 介于 [固定数组] 和 [带内存分配的指针] 之间的性能
- 动态分配的数组和静态数组之间的区别
- 删除[i] 数组和删除数组 [i] 之间的区别
- 当数组位于两个循环之间时,您可以调用数组的 void 函数吗?
- 处理数组时make_unique和make_shared之间的差异
- 在两个结构之间共享数组
- C++堆栈中数组之间的间隙
- 类型测试对象的动态数组的这两个声明之间的区别?
- 如何计算大小为 1000 x 1000 的 2D 数组中 2 个元素之间的步幅?C++
- sizeof(空结构)和sizeof(带有空数组的结构)之间的区别?
- 尝试查找数组中点之间的最小距离时的随机垃圾输出
- 如何在带有 mbed 的 nucleo f446re 之间通过带有 UARTSerial 类的 USB 发送字节数组?
- 在给定的整数数组中,可以找到在给定位置之间分类数组的整数之和
- 这两个代码之间的差异(为什么我的数组也有额外的空间,即使我限制了它)
- 使用STD :: String和字符数组之间的选择
- 如何在不复制数据的情况下在平面数组和多维数组之间进行转换?
- 在函数之间传递相同的数组
- 如果 strlen 在 char 数组之间遇到空格,它会怎么做