每当我与从事实时性能工作的人交谈时,他们往往会指出生成的 X86 汇编指令效率不高。
随着 VMX 之类的出现,我不得不问,商业 C++ 编译器使用这些指令集的可能性有多大?我感觉编译器供应商不会发布特别花哨的程序集,也不会专注于让编译器保持最新。
就此而言,首先什么是好的 X86 组件?
每当我与从事实时性能工作的人交谈时,他们往往会指出生成的 X86 汇编指令效率不高。
随着 VMX 之类的出现,我不得不问,商业 C++ 编译器使用这些指令集的可能性有多大?我感觉编译器供应商不会发布特别花哨的程序集,也不会专注于让编译器保持最新。
就此而言,首先什么是好的 X86 组件?
与你交谈的人一定是表演狂。大多数现代编译器将生成非常有效的代码,这些代码利用分支预测和管道停顿表以及许多优化技术。除了最聪明的程序员之外,它们通常会发出比所有代码都更好的代码。有一些奇怪的例外,这就是为什么让 __asm 和内在函数处于待命状态很好的原因,但是这些被证明是必要的(并且有用的)的情况在这些日子里很少见。
“良好的汇编”意味着编译后的程序以最佳方式利用资源。有一种智慧“以清晰的方式编写代码并让编译器进行优化”。为了保持这种智慧,真正的编译器会在很大程度上生成真正快速的代码。
根据我的经验,Visual C++ 经常为看起来很复杂的 C++ 构造生成令人惊讶的简洁代码,因此编译器供应商不关心代码发射的想法并不是那么正确。