【问题标题】:Save CPU cycles (improve performance) during copy of char array to string在将 char 数组复制到字符串期间节省 CPU 周期(提高性能)
【发布时间】:2012-05-08 04:28:16
【问题描述】:

说明:

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

以下是问题的简短描述 -

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

PusedoCode
pusdo 代码如下所示

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

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

问题

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

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

【问题讨论】:

  • 什么架构?什么CPU型号?它是否需要在多个 CPU 型号上运行?

标签: c++ performance stl


【解决方案1】:

这是优化的复制程序。要获得更高的性能,您可能必须消除副本,否则会牺牲与某些处理器型号的兼容性。

【讨论】:

  • +1。快速复制(或为此运行任何其他代码)的方法是根本不执行它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
  • 1970-01-01
  • 2013-01-12
  • 1970-01-01
相关资源
最近更新 更多