aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Pulford <mark@kyne.com.au>2011-05-29 22:26:12 +0930
committerMark Pulford <mark@kyne.com.au>2011-05-29 22:26:12 +0930
commit7e95a594465453f77b7c9449a3a486771e174111 (patch)
tree0143ccdd4ea67f36fc71a3655e8d88c5bac9224d
parent4b81736946201d61c611f4100d562d618243c9bf (diff)
downloadlua-cjson-7e95a594465453f77b7c9449a3a486771e174111.tar.gz
lua-cjson-7e95a594465453f77b7c9449a3a486771e174111.tar.bz2
lua-cjson-7e95a594465453f77b7c9449a3a486771e174111.zip
Use a benchmark duration, not interation count
Roughly calculate the number of iterations required to run the benchmark for the chosen duration.
-rwxr-xr-xtests/bench.lua14
1 files changed, 12 insertions, 2 deletions
diff --git a/tests/bench.lua b/tests/bench.lua
index 0e2a75c..fdd0bb0 100755
--- a/tests/bench.lua
+++ b/tests/bench.lua
@@ -8,9 +8,10 @@
8 8
9require "common" 9require "common"
10require "socket" 10require "socket"
11
11local json = require "cjson" 12local json = require "cjson"
12 13
13function benchmark(tests, iter, rep) 14function benchmark(tests, seconds, rep)
14 local function bench(func, iter) 15 local function bench(func, iter)
15 -- collectgarbage("stop") 16 -- collectgarbage("stop")
16 collectgarbage("collect") 17 collectgarbage("collect")
@@ -23,6 +24,14 @@ function benchmark(tests, iter, rep)
23 return (iter / t) 24 return (iter / t)
24 end 25 end
25 26
27 -- Roughly calculate the number of interations required
28 -- to obtain a particular time period.
29 local function calc_iter(func, seconds)
30 local base_iter = 10
31 local rate = (bench(func, base_iter) + bench(func, base_iter)) / 2
32 return math.ceil(seconds * rate)
33 end
34
26 local test_results = {} 35 local test_results = {}
27 for name, func in pairs(tests) do 36 for name, func in pairs(tests) do
28 -- k(number), v(string) 37 -- k(number), v(string)
@@ -32,6 +41,7 @@ function benchmark(tests, iter, rep)
32 name = func 41 name = func
33 func = _G[name] 42 func = _G[name]
34 end 43 end
44 local iter = calc_iter(func, seconds)
35 local result = {} 45 local result = {}
36 for i = 1, rep do 46 for i = 1, rep do
37 result[i] = bench(func, iter) 47 result[i] = bench(func, iter)
@@ -59,7 +69,7 @@ function bench_file(filename)
59 decode = test_decode 69 decode = test_decode
60 } 70 }
61 71
62 return benchmark(tests, 5000, 5) 72 return benchmark(tests, 0.1, 5)
63end 73end
64 74
65cjson.encode_keep_buffer(true) 75cjson.encode_keep_buffer(true)