@JLM would be interested in using Haxe, but unfortunately most of the stuff I do is for work and I am limited to AS3 compiling in CS3/CS4.
@katopz: Interesting site, I believe some of their tests have flaws, but it does give some other options to consider. I will have to test some of those loops against linked lists, which I believe will still be faster because there is no array unboxing. On Jan 26, 8:51 pm, katopz <[email protected]> wrote: > > any chance you'd accept a patch if I'm able to make it work? > > sure! just prove it work, fyi, do try this also > > http://businessintelligence.me/projects/performance_tester/performanc... > > cheer ;D > > 2009/1/27 Justin Lawerance Mills <[email protected]> > > > > > > > Did you try using Lambda.map in haxe for sake of argument/comparison, its > > possible to not use a loop at all, but I guess its really looping just in > > more optimal way. For instance I was creating a simple tweener class the > > ot]her day, and used Lambda to map the properties to their new values, its > > just a concept class so it works but is v.basic but if anyone wants it to > > get more grip on mapping i can send it. Not currently using away, but Rob > > mentioned he was looking at haXe. > > > cheer justin > > > On 26 Jan 2009, at 22:05, simplychaos wrote: > > >> I was wondering if there are any plans to use linked lists for > >> iterating through all the various meshes, primitives, lights, etc... ? > >> It seems like Dictionary is used for everything, but according to my > >> speed tests linked lists are quite a bit faster. I'm not sure how much > >> of a boost it would really give but for 5,000,000 iterations here are > >> my numbers: > > >> linked list: 37ms > >> for loop: 67ms > >> dictionary: 179ms > >> while: 38ms > > >> Here's the iteration code I'm using: The array, linked list, and > >> dictionary are already built before timing. obj is a typed variable > >> that has a "nxt" variable to point to the next object in the list. > >> These numbers are from FP10 release version; numbers are similar with > >> debug version, but all slightly slower. > > >> var time:uint = getTimer(); > >> for (i=0; i < len; ++i) { > >> obj = list[i]; > >> } > >> time = getTimer() - time; > >> trace("for loop: " + time); > >> debugText.appendText("for loop: " + time + "\n"); > > >> time = getTimer(); > >> obj = list[0]; > >> var val:Number = 0; > >> while (obj = obj.nxt) { } > > >> time = getTimer() - time; > >> trace("linked list: " + time); > >> debugText.appendText("linked list: " + time + > >> "\n"); > > >> time = getTimer(); > >> for each (obj in dict) { > > >> } > >> time = getTimer() - time; > >> trace("dictionary: " + time); > >> debugText.appendText("dictionary: " + time + "\n"); > > >> time = getTimer(); > >> i = 5000000; > >> while (i--) { > >> obj = list[i]; > >> } > >> time = getTimer() - time; > >> debugText.appendText("while: " + time + "\n"); > > >> This may not have a huge impact, but I thought I'd throw it out there. > > -- > katopzhttp://www.sleepydesign.com
