项目欧拉和其他编码竞赛通常有最长的运行时间或人们吹嘘他们的特定解决方案运行的速度.使用python,有时候这些方法有点像kludgey - 即添加时间码__main__
.
分析python程序运行多长时间的好方法是什么?
我们的构建服务器花了太长时间来构建我们的一个C++项目.它使用Visual Studio 2008.有没有办法让devenv.com记录在解决方案中构建每个项目所花费的时间,以便我知道在哪里集中精力?
在这种情况下,改进的硬件不是一种选择.
我已经尝试设置输出详细程度(在工具/选项/项目和解决方案/构建和运行/ MSBuild项目构建输出详细程度下).这似乎在IDE中没有任何影响.
从命令行运行MSBuild时(对于Visual Studio 2008,它需要是MSBuild v3.5),它显示结束时经过的总时间,但不显示在IDE中.
我真的想要一个解决方案中每个项目的时间报告,以便我可以找出构建过程花费时间的地方.
或者,因为我们实际上使用NAnt来驱动构建过程(我们使用Jetbrains TeamCity),有没有办法让NAnt告诉我每一步所花费的时间?
我正在开发一个具有大量编译时计算的C++项目.漫长的编译时间正在减慢我们的速度.我怎样才能找到模板元程序中最慢的部分,以便我可以优化它们?(当我们有慢运行时计算时,我有很多分析器可供选择,例如valgrind的callgrind
工具.所以我尝试构建一个调试GCC并分析它编译我们的代码,但我没有从中学到太多东西.)
我使用GCC和Clang,但欢迎任何建议.
我profile_templates
在Boost的网站上找到了,但似乎记录很少,需要jam/bjam构建系统.如果您展示如何在非卡纸项目1上使用它,我会向您投票.https://svn.boost.org/svn/boost/sandbox/tools/profile_templates/似乎计算实例数,而计算所花费的时间将是理想的.
1 我们的项目使用CMake并且足够小,只需将模板分析用于模板分析就可以接受.
我正在使用linux中的gcc4.6在C++(0X)中创建一个相当大的库.我的库很大程度上依赖于模板类,导致使用该库的应用程序的编译时间很长.我想通过提供最糟糕的违规类型/方法的明确实例来开始加快速度.
有没有办法让gcc报告编译各种类型/方法所花费的时间,以便我可以以原则方式应用我的显式实例,而不是通过直觉?
如何找出编译器花费时间的位置?
我的构建速度太慢,我已经在使用RAMdisk作为VC++临时文件,它没有任何区别.(我有一个SSD,所以我预计没有区别.)
这个项目中的大多数单个C++文件都需要大约.编译2秒似乎很糟糕(因为我也没有任何项目内并行化,因为我使用的是VS2005).
我该如何优化呢?不进行分析就不优化,但如何分析编译器?
注意:这些并不是真的有用:
让我们添加一个好评:你有很多模板吗?你的文件平均有多大?你检查过,只包括最少的必要标题
不,我没有.我当然可以(当然也会).我或许可以找到一些东西,但这都是猜测和反复试验!
"Everybody"告诉您,您应该只在测量/分析后进行优化,但在优化编译时,我们又回到了试验和错误状态?
注:建议从与评论"黑客" __TIME__
也不能正常工作,至少不会在视觉-C++,因为(在文档状态):在最近的编译时间电流源文件.时间是hh:mm:ss形式的字符串文字. - 我想至少可以获得带有这个标记的单个编译单元的时间,但是它无助于向下钻取到编译单元.
我有一些cpp文件需要很多编译.它们包含一些基本的类/代码,带有一些模板,但没有什么可以证明编译时间大约几十秒.
我确实使用了几个外部库(boost/opencv)
这就是gcc所说的编译时间.如何找到可怕的编译时间的库/包含/函数调用?
Execution times (seconds)
phase setup : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 1445 kB ( 0%) ggc
phase parsing : 6.69 (46%) usr 1.61 (60%) sys 12.14 (47%) wall 488430 kB (66%) ggc
phase lang. deferred : 1.59 (11%) usr 0.36 (13%) sys 3.83 (15%) wall 92964 kB (13%) ggc
phase opt and generate : 6.25 (43%) usr 0.72 (27%) sys 10.09 (39%) wall 152799 kB (21%) ggc
|name lookup : …
Run Code Online (Sandbox Code Playgroud) 我有一个大量使用模板的项目.最近编译时间突然上升.我想知道是否有办法看到哪些类/行需要最多的时间来编译g ++.
以下是-ftime-report的一些输出
Execution times (seconds)
TOTAL : 0.30 0.05 0.37 9119 kB
Execution times (seconds)
garbage collection : 0.91 ( 6%) usr 0.00 ( 0%) sys 0.92 ( 5%) wall 0 kB ( 0%) ggc
callgraph construction: 0.23 ( 2%) usr 0.11 ( 3%) sys 0.37 ( 2%) wall 10652 kB ( 1%) ggc
callgraph optimization: 0.18 ( 1%) usr 0.12 ( 3%) sys 0.28 ( 2%) wall 11906 kB ( 2%) ggc
varpool construction : 0.04 ( 0%) …
Run Code Online (Sandbox Code Playgroud) 为了减少工作中相当大的框架的编译时间,我考虑将.h文件中的类方法定义移动到它们关联的.cpp文件中,如果它们非常大或者需要包括编译可以移动到关联的文件. cpp文件.为清楚起见,下面是一个人为的例子(虽然Foo::inc
是一个很小的方法)
main.cpp:
#include "Foo.h"
int main(int argc, char** argv) {
Foo foo(argc);
foo.inc();
return foo.m_argc;
}
Run Code Online (Sandbox Code Playgroud)
之前是Foo.h(还不需要Foo.cpp):
class Foo {
public:
int m_argc;
Foo (int argc) : m_argc(argc) {}
void inc() { m_argc++; }
};
Run Code Online (Sandbox Code Playgroud)
Foo.h之后:
class Foo {
public:
int m_argc;
Foo (int argc) : m_argc(argc) {}
void inc();
};
Run Code Online (Sandbox Code Playgroud)
Foo.cpp:
#include "Foo.h"
void Foo::inc() { m_argc++; }
Run Code Online (Sandbox Code Playgroud)
很久以前,一位同事提到可能存在导致运行时性能下降的情况.我在谷歌上寻找这个案子,但似乎无法找到它,这个问题的接受答案是我能找到的最接近的答案,但它没有给出案例,只是提到它可能发生:从标题中移动内联方法文件到.cpp文件
在旁注中,我对方法明确使用的情况不感兴趣,inline
我上面链接的答案就是我能找到的最接近我正在寻找的方法
什么情况(如果有的话)可能导致运行时间减慢?
c++ ×6
gcc ×3
profiling ×3
performance ×2
boost ×1
build-time ×1
compilation ×1
g++ ×1
msbuild ×1
python ×1
templates ×1
visual-c++ ×1