gpt4 book ai didi

assembly - 编译器代码生成 - 我们如何知道它是高质量的?

转载 作者:行者123 更新时间:2023-12-02 22:01:34 25 4
gpt4 key购买 nike

现在流行这样一句话:“C/C++ 编译器生成的代码比手写汇编更好。”或“编译器生成的代码与手工编写的代码一样好,而且通常更好。”

但是我们怎么知道这是真的呢?是否有一些关于 HLL 编译器代码质量的有值(value)的研究?我想阅读一些关于这个主题的著作,不仅针对 C/C++,而且还针对其他语言。

谢谢

编辑:我不要求对此主题进行讨论,也不要求个人意见或想法。我询问有关该主题的研究的引用。此类研究绝对必须包含一些可以验证的实验或理论工作。

如果您没有此类信息,请不要回答此问题。我已经知道你对这个话题的所有想法。

最佳答案

今天的 C/C++ 编译器比 15 年前或更早的时候要好得多,因为它们现在可以消耗更多的内存和 CPU 周期(仅仅是因为我们现在有更多可用的编译器),同时越来越积极地优化代码。

相比之下,程序员在过去 15 年里几乎没有在头骨中长出第二个大脑,他们的优化能力现在可能仍保持在 15 甚至 25 年前的水平。

与此同时,CPU 变得更加复杂,满足各种缓存、预测机制、更大的寄存器集、推测和并行执行、更长的管道、资源争用等也变得更加困难。处理所有这些事情会造成精神负担,而且扩展性很差,而我们的软件和我们用它解决的问题却在规模、数量和复杂性上不断增长。新版本的 CPU 通常不仅需要学习新技巧,还需要放弃旧技巧。

此外,您编写汇编代码的效率并不高,尤其是当您需要编写大量汇编代码时。而且维护和更改汇编代码也更加困难。出于经济原因,当编译器可以快速完成相当好的工作时,您可能并不总是可以选择花费大量金钱和工时来生成高质量的优化汇编代码,从而释放测试时间并加快周转速度。

如果您考虑到这一点,如果您已经在这个行业工作了足够长的时间,那么您不需要进行专门的研究就可以看到,在大规模上,优化编译器的性能优于制作优化的汇编代码。

然后人们应该记住,汇编只能给你带来大致线性的性能提升,也许是编译器在困难情况下可以做的事情的 3-5 倍,而选择一种更具可扩展性的算法可以给你带来更好的提升。因此,投资于可扩展算法和并行/分布式系统可能比寻找或培训汇编程序员并为稀有技能支付大量金钱更为谨慎。

说到稀有技能...随着人们越来越多地转向比 C、C++ 和汇编更不原始(或者我应该说不那么低级?)的语言,你就不太可能找到能够在这些低级语言中大放异彩的程序员了。级语言并击败编译器。它们仍然存在,而且总会有一些,但你不应该大规模依赖它们,这只会让你只剩下无法击败编译器的程序员。

您可以将其视为一项研究。 :)

关于assembly - 编译器代码生成 - 我们如何知道它是高质量的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14625263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com