What I compromise by running my application as 32-bit on a 64-bit operating system

We recently switched from Windows XP to Windows 7. We found that one part of the C # application that is trying to create a dbf file for PDA failed to cope with the error message "Provider Microsoft.ACE.OLEDB.12.0" is not registered on the local computer. "

I found that many forums tell me that my exe should be 32-bit, like here .

My question is No. 1) Is there any other driver for accessing dbf on a 64-bit operating system? (I know that there is one for excel access and db access). Is there anything for dbf?

Question number 2. The same as my name. I have the feeling that by switching to 32 bits I do not take full advantage of the 64-bit advantage. so what am I losing this workaround?

Thanks at Advance.

+4
source share
5 answers
The processes

x64 have access to more instructions and more registers. Compiling for x86 vs Any CPU, you refuse the possibility of the JIT compiler to use these instructions and registers (and more memory), which usually leads to a small penalty for performance. But in fact, 99 times out of hundreds of your users will not notice.

What they will notice is that your program does not work if you compile it for any processor, because there is no 64-bit OLE driver for dbf files. This format is no longer used, and therefore I won’t be surprised to learn that Microsoft has not written and does not plan to build a 64-bit version.

+2
source

In answer to your second question, the 64-bit version will not help you so much if you do not want to store huge amounts of data in memory. Most developers are still targeting x86 (32-bit), because with it there is much less hassle. Nevertheless, there are cases when 64-bit systems work better, but, as I said, this is mainly due to the amount of memory that you want to consume.

+2
source

In response to your first question, a 64-bit machine trying to access a database with 32-bit software through MS modules should have data connection components installed:

http://www.microsoft.com/downloads/en/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en

+2
source

With x86, you save memory and simplify the use of Edit-and-Continue. On the minus side, you are limiting your address space. See Some Considerations: 1) do not do VS 64-bit and 2) do the default for new applications created in VS 32-bit:

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

Plus: http://blogs.msdn.com/b/maoni/archive/2007/05/15/64-bit-vs-32-bit.aspx

+2
source

I can not answer the question number 1. but as for number 2, the answer is probably "it depends." Heavy mathematical operations (for example, cryptography) can significantly increase the speed in 64-bit systems if they are implemented properly. You can also address more memory (but this is probably not a problem if you are not using huge amounts of memory).

In other cases, I really saw slight slowdowns for 64-bit applications compared to creating them in the form of 32-bit applications (possibly due to some overhead associated with large addresses).

+1
source

Source: https://habr.com/ru/post/1340983/


All Articles