首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cachegrind输出来优化应用程序

如何使用cachegrind输出来优化应用程序
EN

Stack Overflow用户
提问于 2009-11-13 01:33:41
回答 4查看 4K关注 0票数 8

我需要提高系统的吞吐量。

通常的优化周期已经完成,我们已经获得了1.5倍的吞吐量。

我现在开始怀疑是否可以利用cachegrind输出来提高系统的吞吐量。

有人能给我指点一下怎么开始吗?

我所理解的是,我们需要确保最常用的数据应该保持足够小,以便它保留在L1缓存中,并且下一组数据应该适合L2。

这是我选择的正确方向吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-13 03:20:05

的确,cachegrind输出本身并没有提供太多关于如何优化代码的信息。人们需要知道如何解释它,以及您所说的适合L1和L2的数据确实是正确的方向。

要完全理解内存访问模式如何影响性能,我推荐阅读GNU libc维护者Ulrich Drepper撰写的一篇优秀的论文"What Every Programmer Should Know About Memory"

票数 6
EN

Stack Overflow用户

发布于 2009-11-13 01:59:15

如果您在解析cachegrind输出时遇到问题,请查看KCacheGrind (它应该在您选择的发行版中可用)。我使用它,并发现它非常有用。

票数 3
EN

Stack Overflow用户

发布于 2009-11-13 01:57:29

根据the Cachegrind documentation的说法,cachegrind提供给你的细节是给定代码部分的缓存未命中数量。你需要知道缓存是如何在你的目标架构上工作的,这样你才能知道如何修复代码。在实践中,这意味着使数据更小或更改某些数据的访问模式,以便缓存的数据仍在缓存中。但是,在对信息采取行动之前,您需要了解程序的数据和数据访问。就像手册上说的,

简而言之,Cachegrind可以告诉你代码中的一些瓶颈在哪里,但它不能告诉你如何修复它们。你必须自己解决这个问题。但至少你有信息!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1723997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档