Hi, I downloaded clojure_20080916.zip and had a go with a simple tree benchmark (cut-down version of the one in the computer language shootout http://shootout.alioth.debian.org/).
The Java version is pretty simple and runs in about 2s on my laptop: public class Main { public static void main(String[] args) { System.out.println("result: " + sumTrees(10000, 10)); } public static int sumTrees(int iterations, int depth) { int i; int sum = 0; for (i = 1; i <= iterations; i++) sum += TreeNode.bottomUpTree(i, depth).itemCheck() + TreeNode.bottomUpTree(-i, depth).itemCheck(); return sum; } public static class TreeNode { private TreeNode left, right; private int item; TreeNode(int item) { this.item = item; } TreeNode(int item, TreeNode left, TreeNode right) { this.left = left; this.right = right; this.item = item; } private static TreeNode bottomUpTree(int item, int depth) { if (depth > 0) return new TreeNode(item, bottomUpTree(2*item-1, depth-1), bottomUpTree(2*item, depth-1)); else return new TreeNode(item); } int itemCheck() { if (left == null) return item; else return item + left.itemCheck() - right.itemCheck(); } } } The Clojure version is considerably more compact and elegant: (defn make-tree [item depth] (if (zero? depth) (list item nil nil) (let [item2 (* 2 item) depth-1 (dec depth)] (list item (make-tree (dec item2) depth-1) (make-tree item2 depth-1))))) (defn check-tree [tree] (if (nil? tree) 0 (let [[i l r] tree] (- (+ i (check-tree l)) (check-tree r))))) (defn sum-trees [iterations depth] (let [sum #(+ (check-tree (make-tree % depth)) (check-tree (make-tree (- %) depth)))] (reduce #(+ %1 %2) 0 (map sum (range 1 (inc iterations)))))) (time (println "result:" (sum-trees 10000 10))) However, there is a heavy price to be paid for this elegance: 'Elapsed time: 100730.161515 msecs' Ouch! That's rather disappointing :-( Any suggestions for improving the performance? --~--~---------~--~----~------------~-------~--~----~ 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---