Am coding the my Video codec application in Intel 32 bit assembly using the ICC compiler. I would like to know how much performance gain will be there in 64-bit coding?
Like in contrast how much percent performance gain between 32-bit and 64 bit coding of the same application?
Write it portably so you can test. Assume you arent needing the expanded register set or addressing so there may be little in it or even a loss due to big pointers. If you use 64-bit integers (which are a native data type in 64-bit mode), you may find an advantage.
The code size (bytes) will be larger in the 64-bit variation, however you have more and wider GP registers in 64-bit. If you can make use of the additional registers and the wider GP registers then you may see a gain in going to 64-bit.
Since you are using Video codec application ,i think it would benefit a lof from more available registers and more accessible memory in 64-bit application ,additionly ,compiler would make more mature/bold optimizations in 64-bit mode .
PLMK is my understanding is correct..
-> Using a 32 bit (or) 64 bit OS will not make any performance difference if i am not using AVX instructions (since i work only on 128 bit registers).
-> Code size increases if its an 64bit OS? Why is it so? if there is no performance difference?
Thanks in advance
@ Tim Prince,
Can u pls let me knw
1) difference between 32bit and 64 bit code (performance, memory fetch cycles).
2) Guidelines to be followed during development, with intention of porting it to 64 bit (Assuming the code for 32 bit is to be started newly)
Basic instruction performance (which you can look up in the CPU manufacturer's or Agner Fog's docs) doesn't change between 32- and 64-bit mode. The obvious exception is for 64-bit integer operations which have to be broken down to 32 bits for 32-bit mode (compilers do this automatically). You probably need to tune your code so as to avoid TLB misses which could have differing impact.
Probably the first guideline would be to heed Microsoft's advice to use intrinsics rather than assembly (a must if you use their compiler). You would use size_t and ptrdiff_t properly so as to make the changes happen automatically, at least according to the range of compilers you intend to target.
If you want to take advantage of the additional registers in 64bit mode (32-bit mode has only 3 64-bit integer registers) there may not be much you can do portably without hurting 32-bit performance (not something I have direct experience on).
You might (or might not) find another discussion forum more closely attuned to what you want to do. icc on linux or MAC ought to share many best practices with gcc.