gpt4 book ai didi

performance - 降低了 x64 目标上的 F# 性能?

转载 作者:行者123 更新时间:2023-12-04 03:20:28 25 4
gpt4 key购买 nike

最近,与 x86 相比,我对使用 x64 目标时 F# 编译器的行为感到惊讶。相同的应用程序在不同的目标上使用以下时间:

x86:            68ms
Any CPU/x64: 160ms

对我来说,这个结果很奇怪。
结果相差近两倍。我假设在 64 位处理器、64 位操作系统上,64 位应用程序将比 32 位应用程序运行得更快。

所以问题是:出了什么问题?问题出在编译器上还是我的错?

环境:Core 2 Duo 和 Windows 7 x64。
F# 应用程序:FsYacc/FsLex 语言解析器。 .Net 4 框架。

最佳答案

这可能发生在使用大量指针数据结构的程序中,因为指针在 64 位上是 8 个字节,而在 32 位上是 4 个字节。指针追踪代码的瓶颈是缓存未命中。在 100% 的代码追逐指针的限制下,64 位上的缓存未命中数是 32 位上的两倍,因此速度降低了 2 倍。

但是,对于其他类型的程序,64 位可能比 32 位快,至少在 x86/x64 上是这样。 x64 的通用寄存器数量是 32 位 x86 的两倍,新指令如 SSE/SSE2 保证在 x64 上可用,但在 32 位 x86 上不可用,并且有了更多的地址空间,您可以进行不同的空间速度权衡,例如作为存储而不是重新计算值或内存映射大文件。

关于performance - 降低了 x64 目标上的 F# 性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7157469/

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