我看到很多c ++代码看起来像这样:
for( const_iterator it = list.begin(),
const_iterator ite = list.end();
it != ite; ++it)
Run Code Online (Sandbox Code Playgroud)
与更简洁的版本相反:
for( const_iterator it = list.begin();
it != list.end(); ++it)
Run Code Online (Sandbox Code Playgroud)
这两个约定之间的速度会有什么不同吗?由于list.end()只被调用一次,因此第一个会稍快一些.但由于迭代器是const,似乎编译器会将此测试从循环中拉出来,为两者生成等效的汇编.
c++ compiler-construction optimization iterator coding-style
我曾经用gprof做我所有的Linux分析.
但是,对于我的多线程应用程序,它的输出似乎不一致.
现在,我挖了这个:
http://sam.zoy.org/writings/programming/gprof.html
但是,从很久以前开始,在我的gprof输出中,看来我的gprof列出了非主线程使用的函数.
所以,我的问题是:
1)2010年,我可以轻松使用gprof来分析多线程Linux C++应用程序吗?(Ubuntu 9.10)2)我应该研究哪些其他工具进行性能分析?
我知道我可以使用gprof来对我的代码进行基准测试.
但是,我有这个问题 - 我有一个智能指针,具有额外的间接级别(将其视为代理对象).
因此,我有这个额外的层,几乎影响所有功能,并带有缓存的螺丝.
有没有办法测量我的CPU因缓存未命中而浪费的时间?
谢谢!
在执行优化之前,每个人总是说要对程序进行概要分析,但没有人描述过如何执行优化.
您对C代码进行分析的做法是什么?
你们使用哪些工具?demangle c ++符号如何能够将它传递给探查器工具,例如opannotate?
谢谢
我是一名PHP开发人员,我一直认为微优化不值得花时间.如果你真的需要额外的性能,你可以编写你的软件,使其在架构上更快,或者你编写一个C++扩展来处理慢速任务(或者更好的是,使用HipHop编译代码).然而,今天一位工作伙伴告诉我,这有很大的不同
is_array($array)
Run Code Online (Sandbox Code Playgroud)
和
$array === (array) $array
Run Code Online (Sandbox Code Playgroud)
而且我就像"呃,这真是一个毫无意义的比较",但他不同意我的看法......他是我们公司最好的开发人员,并且负责一个每天大约有5000万次SQL查询的网站 - - 例如.所以,我在这里想知道:他可能是错的还是微优化真的值得花时间和时间?
我正在做一些编码,我必须编写这种代码:
if( array[i]==false )
array[i]=true;
Run Code Online (Sandbox Code Playgroud)
我想知道它是否应该重写为
array[i]=true;
Run Code Online (Sandbox Code Playgroud)
这就提出了一个问题:比例分配的速度快吗?
从语言到语言的差异怎么样?(例如java和cpp之间的对比)
注意:我听说"过早优化是所有邪恶的根源." 我不认为这适用于:)
我需要一些方法来记录Linux机器上的应用程序的性能.我不会有IDE.
理想情况下,我需要一个应用程序,它将附加到进程并记录定期快照:内存使用数线程CPU使用率
有任何想法吗?
确定处理例程所需的时间(例如函数的过程)最好和最准确的方法是什么?
我问,因为我目前正在尝试优化我的应用程序中的一些函数,当我测试更改时,如果有任何改进,只需通过查看就很难确定.因此,如果我能够返回一个准确或接近准确的处理例程的时间,那么我可以更清楚地了解代码是否有任何变化.
我考虑过使用GetTickCount,但我不确定这是否接近准确?
有一个可恢复的函数/过程来计算例程的时间是有用的,并使用它像这样:
// < prepare for calcuation of code
...
ExecuteSomeCode; // < code to test
...
// < stop calcuating code and return time it took to process
Run Code Online (Sandbox Code Playgroud)
我期待听到一些建议.
谢谢.
克雷格.
profiling ×5
c++ ×4
optimization ×4
performance ×4
c ×2
linux ×2
caching ×1
coding-style ×1
delphi ×1
gettickcount ×1
gprof ×1
iterator ×1
perl ×1
php ×1
profiler ×1
refactoring ×1