首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理器在优化代码时有哪些技巧?

问处理器在优化代码时有哪些技巧?
EN

Stack Overflow用户
提问于 2008-11-07 14:34:37
回答 4查看 1.3K关注 0票数 10

我正在寻找像代码重新排序这样的东西,在多处理器的情况下甚至可能破坏代码。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-11-07 14:44:42

维基百科有一个相当全面的here优化技术列表。

票数 0
EN

Stack Overflow用户

发布于 2008-11-07 14:48:35

最重要的一个是内存访问重新排序。

在没有内存围栏或序列化指令的情况下,处理器可以自由地重新排序内存访问。一些处理器架构对它们可以重新排序的数量有限制;Alpha是众所周知的最弱的(即可以重新排序最多的)。

在Documentation/memory-barriers.txt上的Linux内核源代码文档中可以找到这个主题的一个很好的解决方案。

大多数情况下,最好使用编译器或标准库中的锁定原语;这些原语经过了良好的测试,应该具有所有必要的内存屏障,并且可能是非常优化的(优化锁定原语是很棘手的;即使是专家有时也会出错)。

票数 13
EN

Stack Overflow用户

发布于 2008-11-07 14:39:08

是的,但你的问题到底是什么?

然而,由于这是一个有趣的话题:编译器和处理器用来优化代码的技巧不应该破坏代码,即使在代码中没有竞争条件的情况下,使用多个处理器也是如此。这就是所谓的顺序一致性保证:如果您的程序没有任何争用条件,并且所有数据在访问之前都被正确锁定,则代码的行为将如同它是按顺序执行的一样。

Herb Sutter在这里谈到了一个非常好的视频:

http://video.google.com/videoplay?docid=-4714369049736584770

每个人都应该看看这个:)

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

https://stackoverflow.com/questions/272246

复制
相关文章

相似问题

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