相关疑难解决方法(0)

如何在Linux上配置多线程C++应用程序?

我曾经用gprof做我所有的Linux分析.

但是,对于我的多线程应用程序,它的输出似乎不一致.

现在,我挖了这个:

http://sam.zoy.org/writings/programming/gprof.html

但是,从很久以前开始,在我的gprof输出中,看来我的gprof列出了非主线程使用的函数.

所以,我的问题是:

1)2010年,我可以轻松使用gprof来分析多线程Linux C++应用程序吗?(Ubuntu 9.10)2)我应该研究哪些其他工具进行性能分析?

c++ multithreading gprof

46
推荐指数
6
解决办法
5万
查看次数

人们可以使用分析器,但为什么不停止程序呢?

如果某个东西正在使单线程程序占用,比如10倍,那么就可以在其上运行一个分析器.您也可以通过"暂停"按钮暂停它,您将看到它正在做什么.

即使它比它应该慢了10%,如果你停止它多次,不久你会看到它反复做不必要的事情.通常问题是在堆栈中间某处不是真正需要的函数调用.这不能衡量问题,但确实找到了.

编辑:反对意见主要假设您只采取1个样本.如果你是认真的,请采取10.任何一行代码,导致一定比例的浪费,如40%,将平均出现在该部分样本的堆栈上.瓶颈(单线程代码)无法隐藏它.

编辑:为了表明我的意思,许多反对意见的形式是"没有足够的样本,所以你看到的可能完全是虚假的" - 关于机会的模糊观点.但是,如果任何可识别的描述,不仅仅是在常规或常规活动中,在30%的时间内有效,那么在任何给定样本上看到它的概率是30%.

然后假设只采集了10个样本.在10个样本中看到问题的次数遵循二项分布,并且看到它0次的概率是.028.看到它1次的概率是.121.2次,概率为.233,而3次则为.267,之后下降.由于看到它少于两次的概率是.028 + .121 = .139,这意味着看到它两次或更多次的概率是1 - .139 = .861.一般规则是,如果您看到可以修复两个或更多样本的内容,则值得修复.

在这种情况下,在10个样本中看到它的机会是86%.如果你是14%没有看到它的人,那就去做更多的样品.(如果样本数量增加到20,那么两次或多次观察的几率会增加到99%以上.)所以它没有经过精确测量,但已经准确找到了,重要的是要了解它它可能很容易成为分析器无法实际找到的东西,例如涉及数据状态的东西,而不是程序计数器.

optimization performance profiling

45
推荐指数
12
解决办法
3万
查看次数

linux perf:如何解读和查找热点

我今天尝试了linux的perf实用程序,但在解释其结果方面遇到了麻烦.我已经习惯了valgrind的callgrind,这当然是一种完全不同于基于采样的perf方法的方法.

我做了什么:

perf record -g -p $(pidof someapp)
perf report -g -n
Run Code Online (Sandbox Code Playgroud)

现在我看到这样的事情:

+     16.92%  kdevelop  libsqlite3.so.0.8.6               [.] 0x3fe57                                                                                                              ?
+     10.61%  kdevelop  libQtGui.so.4.7.3                 [.] 0x81e344                                                                                                             ?
+      7.09%  kdevelop  libc-2.14.so                      [.] 0x85804                                                                                                              ?
+      4.96%  kdevelop  libQtGui.so.4.7.3                 [.] 0x265b69                                                                                                             ?
+      3.50%  kdevelop  libQtCore.so.4.7.3                [.] 0x18608d                                                                                                             ?
+      2.68%  kdevelop  libc-2.14.so                      [.] memcpy                                                                                                               ?
+      1.15%  kdevelop  [kernel.kallsyms]                 [k] copy_user_generic_string                                                                                             ?
+      0.90%  kdevelop  libQtGui.so.4.7.3                 [.] QTransform::translate(double, double)                                                                                ?
+      0.88%  kdevelop  libc-2.14.so                      [.] __libc_malloc                                                                                                        ?
+ …

c++ linux performance profiling perf

43
推荐指数
5
解决办法
3万
查看次数

如何提高此代码的性能?

感谢来自这里的人们的帮助,我能够获得塔斯马尼亚骆驼拼图工作的代码.然而,它非常慢(我想.我不确定,因为这是我在Python中的第一个程序).在代码底部运行的示例需要很长时间才能在我的机器中解决:

dumrat@dumrat:~/programming/python$ time python camels.py
[['F', 'F', 'F', 'G', 'B', 'B', 'B'], ['F', 'F', 'G', 'F', 'B', 'B', 'B'],
 ['F', 'F', 'B', 'F', 'G', 'B', 'B'], ['F', 'F', 'B', 'F', 'B', 'G', 'B'],
 ['F', 'F', 'B', 'G', 'B', 'F', 'B'], ['F', 'G', 'B', 'F', 'B', 'F', 'B'],
 ['G', 'F', 'B', 'F', 'B', 'F', 'B'], ['B', 'F', 'G', 'F', 'B', 'F', 'B'],
 ['B', 'F', 'B', 'F', 'G', 'F', 'B'], ['B', 'F', 'B', 'F', 'B', 'F', 'G'],
 ['B', 'F', 'B', 'F', 'B', …
Run Code Online (Sandbox Code Playgroud)

python optimization performance time-complexity

38
推荐指数
3
解决办法
2万
查看次数

微观优化值得花时间吗?

我是一名PHP开发人员,我一直认为微优化不值得花时间.如果你真的需要额外的性能,你可以编写你的软件,使其在架构上更快,或者你编写一个C++扩展来处理慢速任务(或者更好的是,使用HipHop编译代码).然而,今天一位工作伙伴告诉我,这有很大的不同

is_array($array)
Run Code Online (Sandbox Code Playgroud)

$array === (array) $array
Run Code Online (Sandbox Code Playgroud)

而且我就像"呃,这真是一个毫无意义的比较",但他不同意我的看法......他是我们公司最好的开发人员,并且负责一个每天大约有5000万次SQL查询的网站 - - 例如.所以,我在这里想知道:他可能是错的还是微优化真的值得花时间和时间?

php optimization performance

37
推荐指数
4
解决办法
9729
查看次数

Linux应用程序分析

我需要一些方法来记录Linux机器上的应用程序的性能.我不会有IDE.

理想情况下,我需要一个应用程序,它将附加到进程并记录定期快照:内存使用数线程CPU使用率

有任何想法吗?

linux profiling

35
推荐指数
3
解决办法
4万
查看次数

快速实现c ++的三角函数

简短版本:我想知道标准三角函数的实现是否比包含的更快math.h.

龙版本:我有一个程序,对NUMERICS相当重(这是一个物理模拟),并需要调用三角函数,主要是sincos,有很多.目前我只是使用其中包含的实现math.h.分析显示对这些函数的调用花费比我预期的要多(希望).

虽然代码的其他部分肯定有足够的优化空间,但速度更快sin,cos可能会给我一些额外的百分比..那么,你们有什么建议吗?
在另一篇文章中,建议使用自制的查找表.但也许有其他选择?或者在一些图书馆中提供现成且经过良好测试的查找解决方

c++ math optimization

33
推荐指数
2
解决办法
2万
查看次数

分析Ruby代码

除了ruby-prof和核心Benchmark类之外,你用什么来分析你的Ruby代码?特别是,您如何找到代码中的瓶颈?几乎感觉我需要使用我自己的小工具才能找出在我的代码中花费的所有时间.

我意识到ruby-prof提供了这个,但输出坦率地说非常混乱,并且不容易找出你自己的代码的哪些实际块是问题的根源(它告诉你哪些方法调用占用了最多的时间)虽然).因此,我并没有像我想的那样得到更多的东西,而且还没有真正能够利用它.

也许我做错了?还有替代品吗?谷歌搜索不会为我带来任何东西.

ruby profiler profiling ruby-prof

31
推荐指数
2
解决办法
2万
查看次数

C和C++源代码分析工具

可能重复:
你最喜欢的分析工具是什么(适用于C++)

是否有任何好的工具来分析混合了C和C++的源代码.有什么优点和缺点,你使用过哪些,并建议使用.请不要给我一个谷歌工具列表.我也可以这样做,我想要的是利用使用这些工具的人的个人经验并了解他们的利弊.
提前致谢.

c c++ profiling

23
推荐指数
2
解决办法
4万
查看次数

替代-pg与Clang?

我希望描述CPU(尽可能的样本),尽可能小的性能影响(因此类似于GCC -pg),使用Clang编译的二进制文件.是否有替代方法使用代码检测,或产生类似于gprof的输出?

c gcc profiling clang gprof

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