在64位操作系统上以32位运行我的应用程序会有什么妥协?

4
我们最近从Windows XP升级到了Windows 7。我们发现C#应用程序的一个部分尝试为PDA创建一个dbf文件时失败并抛出错误消息“'Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册”。
我在许多论坛中找到了指向像这里一样将我的exe构建为32位的方法。
问题1:是否有其他驱动程序可以在64位操作系统上访问dbf?(我知道有一个用于访问Excel和Access数据库的驱动程序)。是否有适用于dbf的?
问题2:与我的标题相同。我有一种感觉,通过转换为32位,我没有充分利用64位的全部优势。那么,通过这种解决方法,我失去了什么?
提前致谢。
5个回答

2

针对你的第二个问题,64位系统除非你想要在内存中存储大量数据,否则并没有太大的优势。大多数开发人员仍然使用x86(32位)因为它更加方便。尽管如此,也有一些情况下64位系统表现更好,但是正如我所说,这主要与你想要占用的内存量有关。


2

“32位数据库”是一个误称。 - Seva Alekseyev
@fabraham - 我看到了,但显然我没有仔细阅读你的问题,因为我错过了.dbf部分(似乎今天对我来说是一个反复出现的主题)。@Joel Coehoorn 给出了适当的答案。 - Joel Etherton

2
使用x86架构可以节省内存,使得使用“编辑并继续”更加容易。但是,缺点是会限制地址空间。以下是一些理由,说明为什么不将VS制作成64位版本以及为什么将新应用程序的默认设置为32位:

1:http://blogs.msdn.com/b/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx

2:http://blogs.msdn.com/b/rmbyers/archive/2009/06/8/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

此外,还有一个正面因素:http://blogs.msdn.com/b/maoni/archive/2007/05/15/64-bit-vs-32-bit.aspx


2
x64进程可以访问更多的指令和寄存器。如果编译为x86与任何CPU相比,您将放弃JIT编译器使用这些指令和寄存器(以及更多内存)的能力,通常会导致(轻微的)性能损失。但实际上,99次中有99次用户不会注意到。

他们会注意到的是,如果您将程序编译为任何CPU,它将无法工作,因为没有64位OLE驱动程序用于dbf文件。这种格式已经不再被广泛使用了,所以我不会感到惊讶,如果得知Microsoft没有编写并且没有计划构建64位版本。


1

我无法回答问题1,但对于问题2,答案可能是“取决于情况”。如果重的数学运算(例如加密)得到了适当实现,64位系统可以获得显著的速度提升。此外,您将能够访问更多内存(但如果您不使用大量内存,则可能不是问题)。

在其他情况下,我实际上看到64位应用程序与构建它们为32位应用程序相比略微减慢(可能由于与较大地址相关的一些开销)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接