I suspect you are not using double arrays with direct array manipulation in CLojure. I wonder whether it is linked to the fact your arrays are not in local (let) variables.
I will try to randomly change a few things in your implementation tomorrow. Best, Nicolas. On Fri, Jul 3, 2009 at 9:56 PM, igorrumiha <igorrum...@gmail.com> wrote: > > On Jul 3, 4:30 pm, Shawn Hoover <shawn.hoo...@gmail.com> wrote: > > Interesting. Maybe I'm crazy, but when running java -server, replacing > > vectors/assoc with arrays/aset slowed my project down from 4000 > > iterations/second to 100! Similarly, removing multimethods for each > > instruction and loop/recur to churn through them and replacing with one > big > > fn generated up front resulted in a massive slowdown. I haven't profiled > > yet, but I plan to do so because I'm so surprised by the results. > > > Well, I did one more thing: implement the VM core in Java. Only the > storage and the instructions. Quite ugly, one class, everything is > public static final, and this thing is fast! I get ~65000 iterations/ > s. It would be interesting to find out why > > machine_data[pc] = machine_data[r1] + machine_data[r2]; > > is so much faster than: > > (aset-double machine-data (+ (Array/getDouble machine-data r1) (Array/ > getDouble machine-data r2))) > > but I guess, at this level, it would involve comparing the generated > JVM bytecode for each case but that is way over my capabilities at > this moment. > > -- > IgorR > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---