oz@yetti.UUCP (Ozan Yigit) (03/21/85)
The mis-alingment of programs under VAXen could be extremely costly, as some of the other net-people have observed. C. J. Van Wyk, J. L. Bentley and P. J. Weinberger report [1] an instance where they timed the i-- and i-=1 statements for 100,000 iterations: Statement timing (in ticks) i-- 24 18 23 25 25 22 25 etc. i-=1 20 23 22 22 22 22 21 etc. In their tests, i-=1 performed 10% better for ALL types of i. But, later.. "This seemed too wonderful to be true, so we looked at the assembler code for the two tests. It was IDENTICAL. The difference arose because the second statement fell on an even eight-byte boundary in memory, while the first fell accross an eight-byte boundary. Thus, the 100,000 iterations of the first statement required twice as many memory fetches as those of second" [1] There are very many horror stories about MISALIGNMENT in the VMS world. The usual rule of thumb is to align all time-critical code properly. [1] C. J. Van Wyk, J. L. Bentley, P. J. Weinberger, "Efficiency Consicerations for C programs on a VAX 11/780", Technical Report CMU-CS-82-134, Carnegie-Mellon University, Dept. of Computer Science, August 1982 Oz (wizard of something or another, no doubt) Dept. of Computer Science York University