【发布时间】:2012-09-08 19:06:46
【问题描述】:
我们知道,现代处理器直接在处理器上执行诸如cosine 和sin 之类的指令,因为它们有相应的操作码。我的问题是这些指令通常需要多少周期。它们需要固定时间还是取决于输入参数?
【问题讨论】:
-
一些编译器出于优化或简单的原因产生对
cos或sin例程的调用。这些例程可能是汇编编码或纯 C 语言,可能使用或不使用处理器数学指令。而且这些指令可能比它们的软件例程对应物慢。当前的超标量乱序处理器没有明确定义的每条指令周期数。 -
另外,由于架构的不同,不同的 CPU 对这些指令的时序也会不同。普通程序员的“最佳实践”是假设调用标准数学库函数将为您提供最佳性能(这些库将进行大量优化) - 但如果您深入了解细节,请查看 Agner Fog 的非常综合Instruction Timing Charts。干杯!
-
你为什么问???为什么这对你很重要??其他方面对您也很重要(符合标准、计算结果的准确性……)。你在编写编译器吗??
-
fsin(和家人)现在很少使用。尤其是在 x64 上。
标签: c math gcc assembly x86-64