Let me know if there is anything else I should change.
perf_test('new') do i = 0 while i < 100000 b = "#{i}" c = "#{i} #{i}" d = "#{i} #{i} #{i}" i += 1 end end
perf_test('<< variables') do i = 0 a = "" a1 = "1" a2 = "2" a3 = "3" a4 = "4" a5 = "5" while i < 25000 a << a1; a << a2; a << a3; a << a4; a << a5 a << a5; a << a4; a << a3; a << a2; a << a1 a << a1; a << a2; a << a3; a << a4; a << a5 a << a5; a << a4; a << a3; a << a2; a << a1 i += 1 end end perf_test('<< literals') do i = 0 a = "" while i < 25000 a << "1"; a << "2"; a << "3"; a << "4"; a << "5" a << "5"; a << "4"; a << "3"; a << "2"; a << "1" a << "1"; a << "2"; a << "3"; a << "4"; a << "5" a << "5"; a << "4"; a << "3"; a << "2"; a << "1" i += 1 end end perf_test('[]') do i = 0 a = "12345" while i < 100000 a[0]; a[1]; a[2]; a[3]; a[4] a[0]; a[1]; a[2]; a[3]; a[4] a[0]; a[1]; a[2]; a[3]; a[4] a[0]; a[1]; a[2]; a[3]; a[4] i += 1 end end perf_test('tuple swap') do i = 0 a = "12345" while i < 100000 a[4], a[0] = a[0], a[4] a[3], a[1] = a[1], a[3] i += 1 end end perf_test('store swap') do i = 0 a = "12345" while i < 100000 temp = a[0] a[0] = a[4] a[4] = temp temp = a[1] a[1] = a[3] a[3] = temp i += 1 end end
On May 27, 2010, at 15:47, Laurent Sansonetti wrote: > I would recommend using strings, but you can assign them to local variables > then reuse these. > > a = 'a' > ... > while... > str << a > > There is no doubt we also need to optimize literal strings but this can be > done in another (separate) test. > > Laurent > > On May 27, 2010, at 1:39 PM, Jordan Breeding wrote: > >> Good point, what if I change to appending binary info? >> >> str << 1 >> >> vs. >> >> str << "1" >> >> On May 27, 2010, at 15:37, Laurent Sansonetti wrote: >> >>> Hi Jordan, >>> >>> The perf suite is far to be completed but we will definitely cover most >>> String methods there at some point. In the meantime, your tests have some >>> side effects I'm afraid (literal strings in loops are object creations). >>> >>> Laurent >>> >>> On May 26, 2010, at 9:09 PM, Jordan Breeding wrote: >>> >>>> Right now MacRuby is really quite slow for string operations, I noticed it >>>> a while back when doing large amounts of string creation, characters >>>> swapping, and pushing/popping strings into/out of a priority queue. >>>> >>>> The attached file is a string performance test and here is a run on my 15" >>>> Core i7 MBP with ruby 1.9.1, jruby, and MacRuby: >>>> >>>> Name ruby 1.9.1p378 MacRuby version jruby >>>> 1.5.0.RC1 >>>> -------------------------------------------------------------------------------- >>>> array:<< 0.751082 1.168693 1.290000 >>>> >>>> array:new 0.394997 1.917601 0.277000 >>>> >>>> array:[] 0.324454 0.755054 0.472000 >>>> >>>> array:[]= 1.691840 0.765225 0.822000 >>>> >>>> hash:new 1.501595 4.563549 0.444000 >>>> >>>> hash:[] 0.612701 1.051502 0.589000 >>>> >>>> hash:[]= 2.012367 1.135856 0.902000 >>>> >>>> ivar:get 0.215424 0.344873 1.087000 >>>> >>>> ivar:set 1.349466 0.243909 1.902000 >>>> >>>> ivar:attr_writer 1.245894 4.587488 0.655000 >>>> >>>> ivar:attr_reader 1.045779 2.755303 0.482000 >>>> >>>> loop:upto 1.211598 5.215169 0.874000 >>>> >>>> loop:times 1.210781 5.215054 0.876000 >>>> >>>> loop:while 0.599330 0.157019 0.937000 >>>> >>>> loop:for 1.442154 0.811875 1.132000 >>>> >>>> method:args 0.728248 0.682097 1.434000 >>>> >>>> method:noarg 0.822463 0.578383 0.837000 >>>> >>>> method:splat 0.478610 1.805760 0.227000 >>>> >>>> method:empty 0.807405 0.527851 1.062000 >>>> >>>> method:opt 1.027146 2.579715 0.944000 >>>> >>>> misc:ao_bench 7.838053 8.529954 3.248000 >>>> >>>> misc:sudoku 1.740196 2.172581 2.461000 >>>> >>>> misc:tak 1.277399 0.155534 1.563000 >>>> >>>> misc:mandelbrot 2.956319 0.124588 0.854000 >>>> >>>> misc:fib 3.827194 0.574900 4.935000 >>>> >>>> misc:ack 1.049100 0.116299 1.217000 >>>> >>>> proc:call+splat 0.318346 1.119665 0.191000 >>>> >>>> proc:call+args 2.477112 1.100848 2.995000 >>>> >>>> proc:call+noarg 2.496278 1.071953 3.507000 >>>> >>>> string:store swap 0.153784 0.479202 0.033000 >>>> >>>> string:<< 0.481788 143.615735 0.099000 >>>> >>>> string:new 0.276954 1.574715 0.207000 >>>> >>>> string:[] 0.428182 1.899233 0.072000 >>>> >>>> string:tuple swap 0.181318 0.721778 0.045000 >>>> >>>> yield:noarg 0.783281 0.720254 1.269000 >>>> >>>> yield:splat 0.159219 0.965713 0.094000 >>>> >>>> yield:less_arity 0.192418 0.843867 0.345000 >>>> >>>> yield:same_arity 0.937823 0.763344 1.547000 >>>> >>>> yield:more_arity 0.192516 0.848179 0.421000 >>>> >>>> Jordan >>>> >>>> <perf_string.rb>_______________________________________________ >>>> MacRuby-devel mailing list >>>> MacRuby-devel@lists.macosforge.org >>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >>> >>> _______________________________________________ >>> MacRuby-devel mailing list >>> MacRuby-devel@lists.macosforge.org >>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >> >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel > > _______________________________________________ > MacRuby-devel mailing list > MacRuby-devel@lists.macosforge.org > http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel