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:
parent
c646af428d
commit
da8be0a5e1
9
bench/records/countLetters.ncl
Normal file
9
bench/records/countLetters.ncl
Normal 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
19
bench/records/merge.ncl
Normal 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
|
||||
}
|
Loading…
Reference in New Issue
Block a user