[MacRuby] #1077: Performance of String
MacRuby
ruby-noreply at macosforge.org
Wed Jan 5 06:42:26 PST 2011
#1077: Performance of String
----------------------------------+-----------------------------------------
Reporter: yasuimao@… | Owner: lsansonetti@…
Type: defect | Status: new
Priority: blocker | Milestone: MacRuby 1.0
Component: MacRuby | Keywords:
----------------------------------+-----------------------------------------
Comment(by yasuimao@…):
As suggested, I added .force_encoding("UTF-16BE") and run the test with
2011/01/05 nightly.
{{{
freq = Hash.new(0)
10.times{File.read("test.txt").force_encoding("UTF-
16BE").scan(/\w+/){|word| freq[word] += 1}}
}}}
'''Results'''
{{{
MacRuby 0.9 2011/01/05
1548 words - 0.082 0.092 0.081
8092 words - 0.43 0.44 0.47
}}}
Now it is slightly faster than 0.8 (or 0.9 2010/12/17 nightly), though
it's still twice as slow as 1.8.7.
I also tested this with NSString#stringWithContentsOfFile:encoding:error:
{{{
freq = Hash.new(0)
10.times{NSString.stringWithContentsOfFile("test.txt",encoding:
NSUTF8StringEncoding, error: nil).scan(/\w+/){|word| freq[word] += 1}}
}}}
'''Results'''
{{{
MacRuby 0.9 2011/01/05
1548 words - 1.39 1.38 1.42
8092 words - 34.81 34.47 34.54
}}}
By applying force_encoding, this process also took less time.
{{{
freq = Hash.new(0)
10.times{NSString.stringWithContentsOfFile("test.txt",encoding:
NSUTF8StringEncoding, error: nil).UTF8String.force_encoding("UTF-
16BE").scan(/\w+/){|word| freq[word] += 1}}
}}}
'''Results'''
{{{
MacRuby 0.9 2011/01/05
1548 words - 0.096 0.084 0.081
8092 words - 0.42 0.42 0.45
}}}
This workaround works, but it would be desirable not to have to add extra
methods.
--
Ticket URL: <http://www.macruby.org/trac/ticket/1077#comment:7>
MacRuby <http://macruby.org/>
More information about the macruby-tickets
mailing list