|
On 4/13/11 11:28 PM, Geoff Leyland wrote:
On 14/04/2011, at 8:59 AM, Pierre-Yves Gérardy wrote:Here you are: local sformat, rnd, tostring, a = string.format, math.random, tostring, nil for i= 1,10000000 do a = sformat( "[%s]", tostring(rnd()) ) -- a = "["..tostring(rnd).."]" end As I told you earlier, I removed table.concat from the benchmark since it was a constant factor, likely to dominate the benchmarkWhy not profile it? (you'll need to look at the output in a monospaced font) $ lua -luatrace.profile concat-bench.lua ... ================================================================================== Visits Total Self Child Line | concat-bench.lua - Times in milliseconds ---------------------------------------------------------------------------------- 1 0.00 0.00 0.00 1 | local t = {} 101 0.01 0.01 0.00 2 | for i = 1, 100 do 100 0.25 0.25 0.00 3 | t[i] = "abc"..tostring(i) . . . . 4 | end . . . . 5 | . . . . 6 | local sformat, rnd, tostring, a = 1 0.00 0.00 0.00 7 | string.format, math.random, tostring, nil . . . . 8 | 100001 9.28 9.28 0.00 9 | for i= 1,100000 do 100000 648.02 648.02 0.00 10 | local s = table.concat(t, ",") 100000 96.93 96.93 0.00 11 | a = sformat("[%s]", s) . . . . 12 | end . . . . 13 | 100001 9.40 9.40 0.00 14 | for i= 1,100000 do 100000 644.82 644.82 0.00 15 | local s = table.concat(t, ",") 100000 60.55 60.55 0.00 16 | a = "["..s.."]" 1 0.00 0.00 0.00 17 | end Hi Geoff, great profiler module. I am seeing an even more pronounced difference ... File:line Visits Total Self Child | Line test/concat-bench.lua:5 1 0.01 0.01 0.00 | local t = {} test/concat-bench.lua:7 101 0.31 0.31 0.00 | for i = 1, 100 do test/concat-bench.lua:8 100 1.39 1.39 0.00 | t[i] = "abc"..tostring(i) test/concat-bench.lua:12 1 0.00 0.00 0.00 | string.format, math.random, tostring, nil test/concat-bench.lua:14 100001 295.24 295.24 0.00 | for i= 1,100000 do test/concat-bench.lua:15 100000 2036.54 2036.54 0.00 | local s = table.concat(t, ",") test/concat-bench.lua:16 100000 1048.60 1048.60 0.00 | a = sformat("[%s]", s) test/concat-bench.lua:19 100001 292.81 292.81 0.00 | for i= 1,100000 do test/concat-bench.lua:20 100000 2034.15 2034.15 0.00 | local s = table.concat(t, ",") test/concat-bench.lua:21 100000 372.85 372.85 0.00 | a = "["..s.."]" test/concat-bench.lua:22 1 0.00 0.00 0.00 | end You tested that on a mac, too? Henning |