Quote:
Originally Posted by jefro
Usually the only reason a 64 bit app is faster is because it was compiled on a newer compiler
|
I don't think the compiler itself is typically newer.
Quote:
and didn't have to take into account legacy issues.
|
But the machine architecture itself is newer, so there are fewer significant variations between models, vs. 32 bit x86 where a compiler (even a new one) has to deal with the possibility that the code will run on older CPU models.
Quote:
They are not faster as such by any hardware issue.
|
They are faster by many hardware issues.
The most important speed issue might be use of SSE floating point vs. legacy floating point, which would qualify as a legacy issue (not a hardware issue) because most 32 bit x86 systems support SSE floating point, but the compiler uses legacy floating point for 32 bit anyway.
x86_64 also has twice as many registers. That could allow slightly faster code in many cases with almost any compiler. But GCC is especially flawed in its ability to deal with register shortage (compared to other compilers) so the speed advantage from doubling the number of registers is especially important for code compiled by GCC.
x86_64 also can do 64 bit integer math in single instructions, which take multiple instructions for 32 bit x86. If 64 bit integer math were common, that would be an overwhelming performance difference. But 64 bit integers are used almost exclusively in support of 64 bit pointers, almost never as independent integers. So 32 bit programs almost never use 64 bit integers and thus are not slowed down by requiring multiple instructions for 64 bit integer operations. 32 bit x86 and x86_64 both have full support for 64 bit floating point.
Those and many other differences balance against many performance disadvantages of x86_64. The most important is that pointers are twice as big and many programs use a lot of pointers, so an x86_64 program will have a higher L2 cache miss rate than an equivalent 32 bit program (when both are run on the same 64 bit CPU).
The typical computer operation for an ordinary user might be too fast to notice or might need to wait for the hard disk or more likely the network. The CPU speed is less often the bottleneck. So the net performance difference (x86_64 advantages minus disadvantages) is a small difference affecting the aspect of performance that usually doesn't matter.
Quote:
It could be that some amount of ram is being paged in larger apps with huge files but that less common.
|
I can't even guess what that is supposed to mean.
Quote:
I doubt you would notice with your eye any difference.
|
I agree.
Quote:
It would be one of those test deals pitting lame 64 against lame 32
|
But why are both "lame"?
Quote:
and saving 1 second on a 30 second task. Could you see it? Well, maybe yes maybe no.
|
That really depends on the task. For a typical 30 second task, where the network or disk is the bottleneck the difference would be zero seconds, not one. A CPU bound 30 second task would often have a difference much larger than 1 second out of 30. But that difference could go either way. 64 bit is sometimes slower. The average difference would be very hard to measure (or even to define) and probably would be quite small.