Notes: * Used DJGPP 2.01 and Allegro 3.1 final * All results while running under Windows 95, no other apps running (so timer accuracy only 0.005). * The tear time is the time for it to run the for loops with no code in the brackets. * The system used was a P200MMX w/32 megs of ram and win 95 gcc -s -m486 -ffast-math -fomit-frame-pointer times: Tear Time (for loop): 0.000 Minus tear time: 0.000 Initializing Array Time (LinkList): 0.110 Minus tear time: 0.110 Initializing Array Time (normal): 0.015 Minus tear time: 0.015 Getting elements (LinkList): 0.020 Minus tear time: 0.020 Getting elements w/GetNext (LinkList): 0.030 Minus tear time: 0.030 Getting elements (normal): 0.005 Minus tear time: 0.005 gcc -s -m486 -o3 -ffast-math -fomit-frame-pointer times: Tear Time (for loop): 0.000 Minus tear time: 0.000 Initializing Array Time (LinkList): 0.105 Minus tear time: 0.105 Initializing Array Time (normal): 0.005 Minus tear time: 0.005 Getting elements (LinkList): 0.010 Minus tear time: 0.010 Getting elements w/GetNext (LinkList): 0.030 Minus tear time: 0.030 Getting elements (normal): 0.000 Minus tear time: 0.000 This is a segment of the code showing approximately what it is timing: //The first is with inlines and unprotected memory access (NO error checks! VERY dangerous) tme = 0; install_int(timeproc, 5); ll.SetToStart(); for (int c=0; c<100000; c++) { tptr = ll._GetNext(); ll._Advance(); } remove_int(timeproc); //The second is with the bool GetNext, which returns false if no more elements. //The return is not checked here because the loop keeps it from running off unexpectedly. tme = 0; install_int(timeproc, 5); ll.SetToStart(); for (int c=0; c<100000; c++) { ll.GetNext(tint); } remove_int(timeproc); Conclusions: Amazing. With the inlined functions, LinkLists overcome their, obviously now overestimated, believed slowness. Even with 100,000 elements, the linklist only takes .010s optimized, very acceptable if their usefullness could be useful in a program. The initializing time is not surprisingly slow, due to the fact that each element is grabbed one at a time and linked, still not bad for adding 100,000 elements. I was surprised with how little the optimizer's effect was on the times. GetNext function about as I expected it, perhaps a tad slower. I tried using the [] operator and timing that, but as expected, it took too long. After almost a minute I stopped the execution. The reason for its slowing being that it is not a sequential access--acessing element 999,995 means accessing elements 999,996, 999,997, 999,998, and 999,999 to get to 999,995. Every element must go through this string, which would increase the time exponentially. This method is approximately equalvent to 5,000,000,000 GetNext() statements, or 150 seconds. It seems that overall this linklist will become an acceptable(speedwise) and viable choice for a program.