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