相关疑难解决方法(0)

如何分析在Linux上运行的C++代码?

我有一个在Linux上运行的C++应用程序,我正在优化它.如何确定代码的哪些区域运行缓慢?

c++ unix profiling

1732
推荐指数
12
解决办法
49万
查看次数

什么是Windows最好的免费C++探查器?

我正在寻找一个分析器,以便找到我的C++代码中的瓶颈.我想找一个免费,非侵入性和良好的分析工具.我是一名游戏开发人员,我使用PIX for Xbox 360并发现它非常好,但它不是免费的.我知道英特尔VTune,但它也不是免费的.

c++ windows profile

220
推荐指数
7
解决办法
17万
查看次数

定时器功能使用C++以纳秒为单位提供时间

我希望计算API返回值所花费的时间.这种行动所花费的时间是纳秒秒.由于API是C++类/函数,我使用timer.h来计算相同的:

  #include <ctime>
  #include <cstdio>

  using namespace std;

  int main(int argc, char** argv) {

      clock_t start;
      double diff;
      start = clock();
      diff = ( std::clock() - start ) / (double)CLOCKS_PER_SEC;
      cout<<"printf: "<< diff <<'\n';

      return 0;
  }
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了以秒为单位的时间.如何在毫秒秒内获得相同的精度?

c c++ timer

101
推荐指数
8
解决办法
20万
查看次数

衡量一段代码的运行时复杂性的最佳实践

我有一段代码,我想测量它的时间效率.由于从代码本身估计这种复杂性很难,我想把它放在循环中并对结果计时.一旦收集到足够的数据点(大小 - >时间),我就能看出哪条曲线最合适.

利用给定大小的随机输入数据多次重复操作可以消除由于OS决定在不良时刻进行多任务而导致的波动,从而产生更精确的时间.增加问题的大小可以提供更多的点,理想情况下间距很大.

我的测试代码工作正常(初始,非定时预热循环减少加载时间;然后,从10的大小开始,以10%的增量扩展到1000000,重复运行直到5s有已完成或已完成5次完整运行).但是,我通过猜测得到了这些数字.

是否有一种可接受的"科学"方法来扩展重复和问题大小,以实现更快,更准确的时间尺寸图?是否有代码(或库)可以支撑所有无聊的位,并且我应该在滚动自己之前知道它?特别是,我可以认为,当发现时间上的颠簸时,可以采取更多措施 - 而相对平稳的读数可以简单地被认为是"足够好".

编辑

我知道计算大O复杂度的经典方法.它适用于具有良好代表性操作(例如,"比较"或"交换")的自包含算法.当不满足这些条件时,它不像宣传的那样工作(例如:LLVM的编译时C++模板实例化成本,这是一个庞大而复杂的,我不知道相关的代表操作是什么).这就是为什么我将它视为一个黑盒子,并试图从外部测量时间而不是代码检查.

time-complexity

15
推荐指数
1
解决办法
973
查看次数

标签 统计

c++ ×3

c ×1

profile ×1

profiling ×1

time-complexity ×1

timer ×1

unix ×1

windows ×1