Hi all, I'm using ruby for some simple scripts for data processing, and I'm interested in Macruby since it's a mac friendly framework and very snappy too. But in this very simple (I think) script, Macruby is 10x slower than built-in Ruby in OSX 10.5.7 It's for reading atom positions, calculating distances, make a summary and find out nearest atoms. You can get the codes here: http://gist.github.com/138760 ------------------------------------------------------------------------------------------------------------------ require 'scanf' arr=IO.readlines(ARGV[0]) pos_data = arr[4..-1] pos = pos_data.collect{|a| a.scanf('%d %d %f %f %f')[2..4]} dist_matrix = pos.collect { |i| pos.collect{|j| (((i[0]-j[0])**2+(i[1]- j[1])**2+(i[2]-j[2])**2)**0.5*0.529*100).round/100.0}} dist_uniq = dist_matrix.inject([]) { |sum,i| sum|i } - [0.0] dist_min = dist_uniq.min dist_dup = dist_matrix.inject([]) { |sum,i| sum+i } dist_sum = dist_dup.inject(Hash.new(0)) { |h,i| h[i] += 1; h} dist_sum_sort = dist_sum.sort.find_all {|i| i[0]<3.0} dist_sum_sort.each { |i| puts "%.2f %d" %i } dist_matrix.each_with_index{|item,i| a=item.index(dist_min) if a then puts "%.2f: %d and %d"%[dist_min, a, i] end } ------------------------------------------------------------------------------------------------------------------ $time macruby dist.rb 309.xv real 0m17.084s user 0m26.893s sys 0m1.330s $time ruby dist.rb 309.xv real 0m1.052s user 0m0.981s sys 0m0.069s $time macruby-exp dist.rb 309.xv real 0m9.934s user 0m17.090s sys 0m0.643s ----------------------------------------------------------------------------------------------------------------------- the 309.xv file is too lengthy for email so you can download from the link. I also tested on several Macs and It's always the same. Any ideas? I admit the codes is not well optimized, but I don't think macruby should be so slow. Even 309**2 is not a too big number for current machines. Thanks, Sincerely Cheng