Add performance measurements to README

This commit is contained in:
James Roseborough
2010-08-15 03:56:03 +00:00
parent c577f5debc
commit f21610e00a
4 changed files with 215 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
-- The Computer Language Benchmarks Game
-- http://shootout.alioth.debian.org/
-- contributed by Mike Pall
local function BottomUpTree(item, depth)
if depth > 0 then
local i = item + item
depth = depth - 1
local left, right = BottomUpTree(i-1, depth), BottomUpTree(i, depth)
return { item, left, right }
else
return { item }
end
end
local function ItemCheck(tree)
if tree[2] then
return tree[1] + ItemCheck(tree[2]) - ItemCheck(tree[3])
else
return tree[1]
end
end
local N = tonumber(arg and arg[1]) or 0
local mindepth = 4
local maxdepth = mindepth + 2
if maxdepth < N then maxdepth = N end
do
local stretchdepth = maxdepth + 1
local stretchtree = BottomUpTree(0, stretchdepth)
io.write(string.format("stretch tree of depth %d\t check: %d\n",
stretchdepth, ItemCheck(stretchtree)))
end
local longlivedtree = BottomUpTree(0, maxdepth)
for depth=mindepth,maxdepth,2 do
local iterations = 2 ^ (maxdepth - depth + mindepth)
local check = 0
for i=1,iterations do
check = check + ItemCheck(BottomUpTree(1, depth)) +
ItemCheck(BottomUpTree(-1, depth))
end
io.write(string.format("%d\t trees of depth %d\t check: %d\n",
iterations*2, depth, check))
end
io.write(string.format("long lived tree of depth %d\t check: %d\n",
maxdepth, ItemCheck(longlivedtree)))

35
test/lua/perf/nsieve.lua Normal file
View File

@@ -0,0 +1,35 @@
-- The Computer Language Shootout
-- http://shootout.alioth.debian.org/
-- contributed by Isaac Gouy
-- modified by Mike Pall
local function nsieve(m,isPrime)
for i=2,m do
isPrime[i] = true
end
local count = 0
for i=2,m do
if isPrime[i] then
for k=i+i, m, i do
if isPrime[k] then isPrime[k] = false end
end
count = count + 1
end
end
return count
end
local n = tonumber(arg and arg[1]) or 1
local flags = {}
local m = (2^n)*10000
print( string.format("Primes up to %8d %8d", m, nsieve(m,flags)))
m = (2^(n-1))*10000
print( string.format("Primes up to %8d %8d", m, nsieve(m,flags)))
m = (2^(n-2))*10000
print( string.format("Primes up to %8d %8d", m, nsieve(m,flags)))