These benchmarks assume naive programmers for the languages, making them useless.
For example lua benchmark, didn't use locals or table.concat
io.stdout:setvbuf "no"; -- io.flush();
-- didn't use local for variables
local str='abcdefgh'..'efghefgh';
local imax=1024/string.len(str)*1024*4; -- 4mb
local starttime=os.time();
print "exec.tm.sec\tstr.length";
gstr='';
local i=0;
while i < imax+1000 do
i=i+1;
gstr= table.concat({gstr}, str) -- was gstr=gstr..str
gstr=string.gsub(gstr,"efgh","____");
lngth=string.len(str)*i;
if(math.mod(lngth,1024*256)==0) then
print(os.time()-starttime.."sec\t\t"..(lngth/1024).."kb");
end
end