最近,当使用x64目标与x86相比时,我对F#编译器的行为感到惊讶.相同的应用程序在不同的目标上使用以下时间: x86: 68msAny CPU/x64: 160ms 对我来说这个结果很奇怪. 结果相差几乎两倍.我假设在
x86: 68ms Any CPU/x64: 160ms
对我来说这个结果很奇怪.
结果相差几乎两倍.我假设在64位处理器64位操作系统上,64位应用程序的工作速度比32位应用程序快.
所以问题是:出了什么问题?问题出现在编译器中,或者是我的错?
环境:Core 2 Duo和Windows 7 x64.
F#应用程序:FsYacc / FsLex语言解析器. .Net 4框架.
但是,对于其他类型的程序,64位可能比32位快,至少在x86 / x64上. x64的通用寄存器数量是32位x86的两倍,SSE / SSE2等新指令保证在x64上可用,但不能在32位x86上使用,并且有更多的地址空间可以进行不同的空速权衡,例如作为存储而不是重新计算值或内存映射大文件.