mirror of
https://github.com/TangentFoxy/rxi-json.lua.git
synced 2025-07-28 02:52:17 +00:00
Added benchmark scripts
This commit is contained in:
60
bench/bench_encode.lua
Normal file
60
bench/bench_encode.lua
Normal file
@@ -0,0 +1,60 @@
|
||||
local bench = require "util.bench"
|
||||
|
||||
|
||||
local libs = {
|
||||
"../json.lua", -- https://github.com/rxi/json.lua
|
||||
"dkjson.lua", -- https://github.com/LuaDist/dkjson
|
||||
"jfjson.lua", -- http://regex.info/blog/lua/json
|
||||
"json4lua.lua", -- https://github.com/craigmj/json4lua
|
||||
}
|
||||
|
||||
|
||||
-- Build table which will be encoded: wikipedia example stored 1000 times
|
||||
local data = {}
|
||||
for i = 1, 1000 do
|
||||
table.insert(data, {
|
||||
firstName = "John",
|
||||
lastName = "Smith",
|
||||
isAlive = true,
|
||||
age = 25,
|
||||
address = {
|
||||
streetAddress = "21 2nd Street",
|
||||
city = "New York",
|
||||
state = "NY",
|
||||
postalCode = "10021-3100"
|
||||
},
|
||||
phoneNumbers = {
|
||||
{ type = "home", number = "212 555-1234" },
|
||||
{ type = "office", number = "646 555-4567" }
|
||||
},
|
||||
children = {},
|
||||
spouse = nil
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
-- Run benchmarks
|
||||
local results = {}
|
||||
|
||||
for i, name in ipairs(libs) do
|
||||
local f = loadfile(name)
|
||||
if not f then
|
||||
error( "failed to load '" .. name .. "'; run './get_json_libs.sh'" )
|
||||
end
|
||||
local json = f()
|
||||
|
||||
-- Handle special cases
|
||||
if name == "jfjson.lua" then
|
||||
local _encode, _decode = json.encode, json.decode
|
||||
json.encode = function(...) return _encode(json, ...) end
|
||||
json.decode = function(...) return _decode(json, ...) end
|
||||
end
|
||||
|
||||
-- Run and push results
|
||||
local res = bench.run(name, 10, function() json.encode(data) end)
|
||||
table.insert(results, res)
|
||||
end
|
||||
|
||||
|
||||
bench.print_system_info()
|
||||
bench.print_results(results)
|
Reference in New Issue
Block a user