64位dll的大小比32位大50%

Ami*_*t G 10 c++ 64-bit visual-c++

我有一个VC++项目(2005),它生成32位和64位dll.32位dll是1044 KB,而64位版本是1620 KB.我很好奇为什么尺寸这么大.是因为地址大小较大,还是我缺少编译器选项?

Ara*_*raK 13

也许你的代码包含很多指针.

免费午餐结束了

....

(旁白:这是一个轶事,演示了"空间就是速度",最近命中我的编译器团队.编译器对32位和64位编译器使用相同的源代码;代码只编译为32位进程64位编译器通过在64位CPU上运行获得了大量的基准性能,主要是因为64位CPU有更多的寄存器可供使用,并具有其他代码性能特性.但是数据怎么样?转到64位并没有 改变 内存 中大部分数据的大小,除了当然特别是 指针现在是以前 大小的两倍.实际上,我们的编译器使用了 内部数据 结构中的 指针比其他大多数类型的应用程序都要大得多.因为指针现在是8个字节而不是4个字节,纯数据大小增加,我们看到64位编译器的工作集显着增加.更大的工作集导致了性能损失 ost恰好抵消了我们通过更多寄存器转到更快的处理器所获得的代码执行性能提升.在撰写本文时,64位编译器以与32位编译器相同的速度运行,即使两者的源库相同,64位处理器也能提供更好的原始处理吞吐量.空间很快.)

  • 请注意,此代码段是在讨论数据的大小,而不是代码的大小.但我认为结果和原因与代码和数据类似. (2认同)