Oys*_*erD 81 c++ performance profiling
到目前为止,我只使用过Rational Quantify.我听说过有关英特尔VTune的好消息,但从未尝试过!
编辑:我主要是在寻找可以检测代码的软件,因为我猜这是获得非常好结果的唯一方法.
Al.*_*Al. 35
对于Linux开发(尽管其中一些工具可能适用于其他平台).这是我所知道的两个大牌,还有很多其他较小的名字在一段时间内没有看到积极的发展.
Wei*_*nde 26
对于Linux: Google Perftools
我以前从未做过剖析.昨天我编写了一个ProfilingTimer类,它带有一个静态时间表(map <std :: string,long long>)用于时间存储.
构造函数存储起始刻度,析构函数计算经过的时间并将其添加到地图中:
ProfilingTimer::ProfilingTimer(std::string name)
: mLocalName(name)
{
sNestedName += mLocalName;
sNestedName += " > ";
if(sTimetable.find(sNestedName) == sTimetable.end())
sTimetable[sNestedName] = 0;
mStartTick = Platform::GetTimerTicks();
}
ProfilingTimer::~ProfilingTimer()
{
long long totalTicks = Platform::GetTimerTicks() - mStartTick;
sTimetable[sNestedName] += totalTicks;
sNestedName.erase(sNestedName.length() - mLocalName.length() - 3);
}
Run Code Online (Sandbox Code Playgroud)
在我要配置的每个函数(或{block})中,我需要添加:
ProfilingTimer _ProfilingTimer("identifier");
Run Code Online (Sandbox Code Playgroud)
这条线在我想要描述的所有函数中添加有点麻烦,因为我必须猜测哪些函数需要花费很多时间.但它运作良好,打印功能以%表示消耗时间.
(是否有其他人使用任何类似的"自制分析"?或者它只是愚蠢?但它很有趣!有没有人有改进建议?
是否有某种自动添加线到所有功能?)
分析有不同的要求。检测的代码是否可以,或者您是否需要分析优化的代码(甚至已经编译的代码)?您需要逐行的个人资料信息吗?您正在运行哪个操作系统?您还需要分析共享库吗?跟踪系统调用怎么样?
就我个人而言,我所做的一切都使用 oprofile,但这可能不是所有情况下的最佳选择。Vtune 和 Shark 也都非常出色。
| 归档时间: |
|
| 查看次数: |
62044 次 |
| 最近记录: |