3
如果我运行Valgrind cachegrind,具有一个或多个线程的结果会不同吗?或者Valgrind只是序列化程序,只报告一个线程的工作?Valgrind的cachegrind是否受多线程代码影响?
如果我运行Valgrind cachegrind,具有一个或多个线程的结果会不同吗?或者Valgrind只是序列化程序,只报告一个线程的工作?Valgrind的cachegrind是否受多线程代码影响?
Valgrind以不确定的方式连续化全部线程并分析顺序代码流。您将收到有关您所有代码的结果,但结果可能并不代表相同代码的实际生产运行。 (例如,许多并发相关的错误不会在Valgrind下运行的程序中显示。)
谢谢。在接受答案之前跟进“是 - 否”问题:)请问cachegrind会计算所有缓存未命中(从所有线程,而不是一个)并聚合它们吗? –
@DervinThunk:是的,它还能做什么?但要注意,序列化程序的缓存行为可能与实际运行不同。我对cachegrind知之甚少,不知道这是否有重大影响。但是,由于序列化是真正机器(例如单核机器)上的可能执行路径,我想这仍然是有用的信息。 –