Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What am I compromising by running my application as 32 bit in a 64 bit OS Machine

We recently moved from Windows XP to Windows 7. We found that one part of application in C# that try to create a dbf file for a PDA failed thorwing an error message "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

I found many forums pointing me to build my exe as 32 bit like here.

My Question No. 1) Is there any other driver for accessing dbf on a 64 bit OS machine? (I know there is one for accessing excel and access db). Anything there for dbf?

Question No 2. same as my Title. I have a feeling that by converting to 32 bit, I am not making use of the full advantage of a 64 bit. so What am I losing by this workaround?

Thanks in Advance.

like image 676
franklins Avatar asked Jan 20 '23 10:01

franklins


2 Answers

x64 processes have access to more instructions and more registers. By compiling for x86 vs Any CPU you give up the ability for the JIT compiler to use those instructions and registers (and more memory), typically resulting in a (small) performance penalty. But really, 99 times out of a hundred your users won't notice.

What they will notice is that your program doesn't work if you compile it for Any CPU because there is no 64bit OLE driver for dbf files. This format is not used as much any more, and so it wouldn't surprise me to learn that Microsoft has not written and has no plans to build the 64bit version.

like image 118
Joel Coehoorn Avatar answered Feb 07 '23 12:02

Joel Coehoorn


In response to your second question, 64-bit doesn't get you that much unless you want to store huge amounts of data in memory. Most developers still target x86 (32-bit) because there's a lot less hassle with it. That said, there are cases when 64-bit systems operate better but, as I said, it's mainly to do with the amount of memory you want to consume.

like image 39
Dmitri Nesteruk Avatar answered Feb 07 '23 11:02

Dmitri Nesteruk