c++ - 在将 char 数组复制到字符串期间节省 CPU 周期(提高性能)

标签 c++ performance stl

描述:

我正在分析我的应用程序以提高整体性能,在我发现的不同瓶颈中,消耗性能的主要区域之一似乎来自 _wordcopy_fwd_dest_aligned 指令/函数。

下面是问题的简短描述 -

  • 函数获取一个缓冲流 - 包含长度和长度值格式的字符流。
  • 阅读 len(一些用于检查机器对齐等的代码)。
  • 读取字符数组并赋值给字符串。

PusedoCode
pusedo 代码如下所示

read_buf(max_len)  
v.assign((char*)pdata,max_len)  

现在,当从量化报告中检查 CPU 周期时,我看到 _wordcopy_fwd_dest_aligned 中的利用率很高。也来自报告,例如 - Improve CPU Cycles for performance ,我看到这个想法是通过使用任何替代方法来减少这种情况。

问题

  1. 上面的代码是否有一个简单的替代方案,它可以减少/消除 _wordcopy_fwd_dest_aligned 的使用,从而提高性能(即使以内存为代价)。
  2. 如果上述方法不起作用,是否有针对上述代码的建议变通区域?但最终的 o/p 本身需要在字符串中。

附言:
A。由于代码需要在分布式环境中工作,需要处理单词对齐等问题,所以对问题列表中的选项 (2) 有点犹豫。
b.我们正在使用 STLport 库,所以这是否需要任何调整/这会导致问题吗? std::string v.assign(...) 的简单代码没有显示 _wordcopy_fwd_dest_aligned

最佳答案

这是优化的复制例程。为了获得更高的性能,您可能必须消除拷贝,或者牺牲与某些处理器型号的兼容性。

关于c++ - 在将 char 数组复制到字符串期间节省 CPU 周期(提高性能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10492546/

相关文章:

python - Python 中的高效矢量/点类

c# - DataTable 使用列号而不是列名排序

c - 如果在 Intel Skylake CPU 上作为函数调用,为什么我的空循环运行速度快两倍?

c++ - C++ STL 中还有哪些其他数据结构可用?

c++ - 是否有在 C/C++ 中复制数组的函数?

c++ - 如何定义模板函数重载以匹配空 std::tuple<>?

c++ - 如何使用变量名引用数组位置

c++ - 返回类(class)成员时遇到麻烦

c++ - map 给出一些模棱两可的值(value)

c++ - 内部移动 std::vector 元素和 QVector