1
1
mirror of https://github.com/tweag/nickel.git synced 2024-09-20 08:05:15 +03:00

Add records benchmarks

This commit is contained in:
Yann Hamdaoui 2021-03-22 18:37:27 +01:00
parent c646af428d
commit da8be0a5e1
2 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,9 @@
{
run = fun s =>
let updateDict = fun dict char =>
if records.hasField dict char then
dict -$ char & {"#{char}" = dict."#{char}" + 1}
else
dict & {"#{char}" = 1} in
list.foldl updateDict {} (strings.chars s)
}

19
bench/records/merge.ncl Normal file
View File

@ -0,0 +1,19 @@
{
run = fun n m =>
let prefix = fun n =>
let l = lists.generate (fun _n => "a") n in
lists.foldl (fun x y => x ++ y) "" l in
let makeRecStep = fun state k =>
let name = state.prevName ++ (strings.fromNum k) in
{
value = state.value & {"#{name}" = {}},
prevName = name,
} in
let topList = lists.generate builtins.id m in
let makeRec = fun m =>
let l = lists.generate builtins.id n in
let result = lists.foldl makeRecStep {value = {}, prevName = prefix m} l in
result.value in
let l = lists.map makeRec topList in
lists.foldl (fun r1 r2 => r1 & r2) {} l
}