gpt4 book ai didi

swift - Swift 中的 Double vs Float80 速度

转载 作者:可可西里 更新时间:2023-10-31 23:57:35 29 4
gpt4 key购买 nike

我听说x87 FPU是用80位 float 工作的,所以即使我想用64位数字计算,它也会用80位计算然后转换。但在 x86-64DoubleFloat80(计算算术时)上,Swift 中哪个最快?

最佳答案

虽然 x87 FPU 确实以 80 位“扩展”精度在内部运行(至少,默认情况下;这是可定制的,实际上 32 位构建遵循 macOS ABI 设置 64 位内部精度), 针对 x86-64 的二进制文件不再使用 x87 FPU 指令。所有实现 64 位长模式扩展的 x86 芯片也支持 SSE2(事实上,这是 AMD64 规范所要求的),因此 64 位二进制文​​件始终可以假设支持 SSE2。因此,这就是用于实现浮点运算的方法,因为它更高效且更容易针对编译器进行优化。

即使是现代的 32 位构建也将 SSE2 视为最低要求,肯定在 Macintosh 平台上,因为 SSE2 是随 Pentium 4 引入的,它早于 Macintosh 平台转向 Intel x86芯片。 Apple 机器中使用过的所有 x86 芯片都支持 SSE2。

所以不,您不会通过使用 80 位扩展精度类型看到任何性能改进。您不会从 x87 指令中看到任何性能改进,即使它们是由编译器生成的。而且您肯定不会在 x86-64 上看到任何性能改进,因为 SSE2 在硬件中支持最大 64 位精度。任何 80 位精度的操作都必须在软件中实现,或者强制智能编译器发出 x87 指令,这意味着您无法从 SSE2 的任何优秀功能和切实的性能改进中受益。

关于swift - Swift 中的 Double vs Float80 速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45265373/

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