Files
core/test/performance/fixtures/json/app.dever
T
2026-11-03 03:32:07 +00:00

57 lines
1.2 KiB
Plaintext

type State {
source: Json
update: Bool
checksum: Int
}
run(source: Json, update: Bool, ticks: Text) (sample: Sample) {
input = dever.bytes.fromText(ticks)
initial = State {
source = source
update = update
checksum = 0
}
output = transform(source, update)
begin = dever.time.monotonicNanos()
final = reduce(step, input, initial)
end = dever.time.monotonicNanos()
sample = Sample {
elapsed_ns = end - begin
checksum = final.checksum
output = output
}
}
type Sample {
elapsed_ns: Int
checksum: Int
output: Text
}
step(unused: Int, state: State) (next: State) {
output = transform(state.source, state.update)
next = State {
source = state.source
update = state.update
checksum = state.checksum + length(dever.bytes.fromText(output))
}
}
transform(source: Json, update: false) (output: Text) {
output = selected(dever.json.propertyValue(source, "data"))
}
transform(source: Json, update: true) (output: Text) {
output = dever.json.toText(
dever.json.setProperty(source, "active", dever.json.boolean(true))
)
}
selected(value: Json) (output: Text) {
output = dever.json.toText(value)
}
selected(value: null) (output: Text) {
output = "null"
}