On 11/7/2013 6:21 AM, Sven Barth wrote:
The resulting instructions depend highly on the architecture. E.g. on x86 and m68k for the first case a MOV/MOVE instruction with a multiplier will be used while on other platforms this might involve an explicit multiplication. Also it will depend on the optimization level you use (e.g. on x86 the generated code for the first case is very different between -O2 and -O3). In the end you'd need to calculate the instruction timings to know whether one of the two is really faster than the other (and then you can compare that later on with your own implementation to check whether your code or the compiler's is faster ^^)
I'm on x86. I was hoping for a little more than "profile it to find out" (for example, if pointers are optimized to be in indexing registers then it should be obvious that is fastest), but if I have to do that, then I guess that's what I'll have to do.
I suppose I can just write a short program that indexes data many different ways and then examine the asm output.
-- Jim Leonard ([email protected]) Check out some trippy MindCandy: http://www.mindcandydvd.com/ A child borne of the home computer wars: http://trixter.oldskool.org/ You're all insane and trying to steal my magic bag! _______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-devel
