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

时间:2012-05-08 04:28:17

标签: 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需要在字符串本身。

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

1 个答案:

答案 0 :(得分:4)

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