Hello,

I'm rewriting an app for text analysis in MacRuby, which I originally wrote in 
RubyCocoa.  But I encountered a serious performance issue in MacRuby, which is 
related to processing text using regular expressions.  

I'm wondering if this will be taken care of in the near future (or already done 
in 0.8?).

Below are my simple tests.  The first two are essentially the same with a 
slightly different approach.  Both are simply counting frequency of each word.  
I want to use the first approach not to count word frequencies, but in other 
processes.  The third one is to test the speed of String#gsub with regular 
expression.  I felt String#gsub was slow in my app, so I just wanted to test 
how slow it is compared to RubyCocoa.

 
Test 1 - scan-block

freq = Hash.new(0)
text.scan(/\w+/) do |word|
  freq[word] += 1
end


Test 2 - scan array.each

freq = Hash.new(0)
text.scan(/\w+/).each do |word|
  freq[word] += 1
end


Test 3 - gsub upcase

text.gsub!(/\w+/){|x| x.upcase}  


The results are in seconds.  The original text is in English with 8154 words.  
Each process was repeated 10 times to calculate processing times.  Each test 
were done 3 times.

Ruby 1.8.7       Test1 - scan-block:                      0.542,    0.502,    
0.518
Ruby 1.8.7       Test2 - scan array.each:                 0.399,    0.392,    
0.399
Ruby 1.8.7       Test3 - gsub upcase:             0.384,    0.349,    0.390

MacRuby 0.7.1 Test1 - scan-block:               27.612,  27.707,  27.453
MacRuby 0.7.1 Test2 - scan array.each:    3.556,    3.616,    3.554
MacRuby 0.7.1 Test3 - gsub upcase:              27.613,  26.826,  27.327


Thanks,
Yasu
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to