Running 32bit software on 64bit a OS - Performance

If i ran a 32bit software on a 64bit windows 7 OS would it degrade any performance, as it runs on a emulation layer? Thanks!
As I understand it, there's no "emulation layer" as such - the commonly available "64-bit" processors are capable of running 32-bit code natively, and WoW64 simply intercepts and redirects the relevant calls, so there should be no detectable performance hit.

It's a bit outside my comfort zone though, so maybe someone better-informed could shed more light.
 
As I understand it, there's no "emulation layer" as such - the commonly available "64-bit" processors are capable of running 32-bit code natively, and WoW64 simply intercepts and redirects the relevant calls, so there should be no detectable performance hit.

Close.

Technically, it is emulation. There isn't any redirection as such, but there is a instruction that tells the CPU that it's going to be 32 bits in length and then executes as it otherwise would. Again, technically there is a performance hit, but it's going to be literally one or two cycles per instruction which I'd be surprised if it were detectable.

However, this is a feature of the CPU not the OS, so the same would happen on 32bit 7.

In summary, don't worry about it, you'll never notice any difference.
 
It will run fine , but depending on the app you may get a performance hit
Only way to be sure is to dual boot a 32 bit OS and a 64bit one
Try the app in both and see which it runs best on

On a side note it would be awesome if people would actually compile 2 different versions
of programs so you could use the best one suited for your OS.
 
No performance hit.

Burnsy, the first guy was actually closer than you :p

When the thread scheduler is scheduling a thread... as part of the process of performing a context switch... the scheduler will check whether the thread is owned by a 32-bit or a 64-bit process. If it is owned by a 32-bit process then the thread scheduler will execute a special instruction available only in the AMD64 instruction set. This instruction effectively switches the CPU into legacy x86 mode. Once the thread has finished executing and/or its time slice quantum expires. It will run another instruction that reverts the CPU back into its native "long mode" (a.k.a. x86-64 or x64 or 64-bit).

This is not emulation, it's more a wrapper than anything. WOW64 has a few other parts to it that do some redirection of user-mode stuff (Registry, File I/O) but that stuff is all negligable.

Also, believe it or not, AMD64 also made some rather large improvements to context switching in general. The whole process of popping and pushing the stack and storing the registers was simplified. Therefore, even when it has to perform a legacy<->long-mode transition it is still faster than a regular x86 thread context switch.
 
Back
Top Bottom