chore(benches): this is a set of RAM intensive benchmarks to understand memory consumption patterns in AquaVM

This commit is contained in:
raftedproc 2024-01-15 15:10:01 +03:00 committed by GitHub
parent d7d33ddb7f
commit 1888de130c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 1691 additions and 846 deletions

File diff suppressed because it is too large Load Diff

View File

@ -328,347 +328,480 @@ Machine 62dabcde478dc58760ebbe71ef6047299144a5f63990c6c3d826ebf30175adfc:
new: 42.00µs
Machine 88756ca30bfb93b0da6a64252adc98fc3e97e142c3b4970af3d2948fd66107b4:
Platform: Linux-6.5.9-arch2-1-x86_64-with-glibc2.35
Timestamp: 2023-12-26 11:57:40.853306+00:00
AquaVM version: 0.55.0
Timestamp: 2024-01-15 11:32:08.545924+00:00
AquaVM version: 0.58.0
Benches:
Features:
big-values-data (19.20ms; 59.000 MiB, 59.000 MiB): Loading a trace with huge values
air::runner::execute_air: 19.20ms
preparation_step::preparation::parse_data: 7.01ms
try_from_slice: 6.96ms
big-values-data (5.02ms; 56.250 MiB, 56.250 MiB): Loading a trace with huge values
air::runner::execute_air: 5.02ms
preparation_step::preparation::parse_data: 1.07ms
serialize: 16.00µs
try_from_slice: 968.00µs
preparation_step::preparation::prepare: 184.00µs
air::preparation_step::preparation::make_exec_ctx: 44.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 19.00µs
runner::execute: 9.00µs
runner::farewell: 5.81ms
from_success_result: 5.78ms
populate_outcome_from_contexts: 5.74ms
CallRequestsRepr.serialize: 15.00µs
InterpreterData::serialize: 4.44ms
signing_step::sign_produced_cids: 98.00µs
verification_step::verify: 5.99ms
verify: 5.66ms
call-requests500 (53.00ms; 70.562 MiB, 70.562 MiB): multiple call requests
air::runner::execute_air: 53.00ms
preparation_step::preparation::parse_data: 105.00µs
try_from_slice: 66.00µs
preparation_step::preparation::prepare: 235.00µs
air::preparation_step::preparation::make_exec_ctx: 60.00µs
CallResultsRepr.deserialize: 34.00µs
air_parser::parser::air_parser::parse: 48.00µs
runner::execute: 25.00ms
runner::farewell: 27.30ms
from_success_result: 27.30ms
populate_outcome_from_contexts: 27.10ms
CallRequestsRepr.serialize: 26.50ms
InterpreterData::serialize: 377.00µs
signing_step::sign_produced_cids: 136.00µs
verification_step::verify: 64.00µs
verify: 10.00µs
call-results500 (21.20ms; 54.438 MiB, 54.438 MiB): multiple call results
air::runner::execute_air: 21.20ms
preparation_step::preparation::parse_data: 587.00µs
try_from_slice: 546.00µs
preparation_step::preparation::prepare: 895.00µs
air::preparation_step::preparation::make_exec_ctx: 718.00µs
CallResultsRepr.deserialize: 686.00µs
air_parser::parser::air_parser::parse: 50.00µs
runner::execute: 16.50ms
runner::farewell: 2.63ms
from_success_result: 2.60ms
populate_outcome_from_contexts: 2.15ms
CallRequestsRepr.serialize: 13.00µs
InterpreterData::serialize: 1.54ms
signing_step::sign_produced_cids: 456.00µs
verification_step::verify: 67.00µs
verify: 10.00µs
canon-map-key-by-lens (16.00ms; 56.625 MiB, 56.625 MiB): benchmarking a map insert operation
air::runner::execute_air: 16.00ms
preparation_step::preparation::parse_data: 4.07ms
try_from_slice: 4.01ms
preparation_step::preparation::prepare: 549.00µs
air::preparation_step::preparation::make_exec_ctx: 365.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 56.00µs
runner::execute: 2.84ms
runner::farewell: 3.49ms
from_success_result: 3.46ms
populate_outcome_from_contexts: 3.00ms
CallRequestsRepr.serialize: 15.00µs
InterpreterData::serialize: 2.55ms
signing_step::sign_produced_cids: 102.00µs
verification_step::verify: 4.84ms
verify: 4.51ms
canon-map-key-element-by-lens (17.10ms; 56.625 MiB, 56.625 MiB): benchmarking a map insert operation
air::runner::execute_air: 17.10ms
preparation_step::preparation::parse_data: 4.03ms
try_from_slice: 3.99ms
preparation_step::preparation::prepare: 868.00µs
air::preparation_step::preparation::make_exec_ctx: 614.00µs
CallResultsRepr.deserialize: 18.00µs
air_parser::parser::air_parser::parse: 90.00µs
runner::execute: 3.21ms
runner::farewell: 3.22ms
from_success_result: 3.19ms
populate_outcome_from_contexts: 2.79ms
CallRequestsRepr.serialize: 14.00µs
InterpreterData::serialize: 2.42ms
signing_step::sign_produced_cids: 108.00µs
verification_step::verify: 5.46ms
verify: 4.90ms
canon-map-multiple-keys (13.20ms; 54.500 MiB, 54.500 MiB): benchmarking a map insert operation
air::runner::execute_air: 13.20ms
preparation_step::preparation::parse_data: 326.00µs
try_from_slice: 286.00µs
preparation_step::preparation::prepare: 212.00µs
air::preparation_step::preparation::make_exec_ctx: 38.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 47.00µs
runner::execute: 9.08ms
runner::farewell: 3.05ms
from_success_result: 3.03ms
populate_outcome_from_contexts: 2.69ms
CallRequestsRepr.serialize: 15.00µs
InterpreterData::serialize: 2.33ms
signing_step::sign_produced_cids: 108.00µs
verification_step::verify: 337.00µs
verify: 25.00µs
canon-map-scalar-multiple-keys (4.91ms; 53.125 MiB, 53.125 MiB): benchmarking a map insert operation
air::runner::execute_air: 4.91ms
preparation_step::preparation::parse_data: 325.00µs
try_from_slice: 285.00µs
preparation_step::preparation::prepare: 205.00µs
air::preparation_step::preparation::make_exec_ctx: 37.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 44.00µs
runner::execute: 3.32ms
runner::farewell: 495.00µs
from_success_result: 473.00µs
populate_outcome_from_contexts: 435.00µs
CallRequestsRepr.serialize: 13.00µs
InterpreterData::serialize: 171.00µs
signing_step::sign_produced_cids: 101.00µs
verification_step::verify: 338.00µs
verify: 25.00µs
canon-map-scalar-single-key (4.26ms; 53.000 MiB, 53.000 MiB): benchmarking a map insert operation
air::runner::execute_air: 4.26ms
preparation_step::preparation::parse_data: 378.00µs
try_from_slice: 328.00µs
preparation_step::preparation::prepare: 205.00µs
air::preparation_step::preparation::make_exec_ctx: 37.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 43.00µs
runner::execute: 2.49ms
runner::farewell: 493.00µs
from_success_result: 471.00µs
populate_outcome_from_contexts: 418.00µs
CallRequestsRepr.serialize: 12.00µs
InterpreterData::serialize: 179.00µs
signing_step::sign_produced_cids: 103.00µs
verification_step::verify: 452.00µs
verify: 82.00µs
canon-map-single-key (11.60ms; 55.312 MiB, 55.312 MiB): benchmarking a map insert operation
air::runner::execute_air: 11.60ms
preparation_step::preparation::parse_data: 395.00µs
try_from_slice: 356.00µs
preparation_step::preparation::prepare: 205.00µs
air::preparation_step::preparation::make_exec_ctx: 42.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 41.00µs
runner::execute: 7.10ms
runner::farewell: 3.24ms
from_success_result: 3.22ms
populate_outcome_from_contexts: 2.92ms
CallRequestsRepr.serialize: 14.00µs
InterpreterData::serialize: 2.59ms
signing_step::sign_produced_cids: 114.00µs
verification_step::verify: 383.00µs
verify: 67.00µs
dashboard (6.67ms; 52.625 MiB, 52.625 MiB): big dashboard test
air::runner::execute_air: 6.67ms
preparation_step::preparation::parse_data: 1.05ms
try_from_slice: 986.00µs
preparation_step::preparation::prepare: 336.00µs
air::preparation_step::preparation::make_exec_ctx: 63.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 138.00µs
runner::execute: 1.41ms
runner::farewell: 805.00µs
from_success_result: 784.00µs
populate_outcome_from_contexts: 736.00µs
CallRequestsRepr.serialize: 28.00µs
InterpreterData::serialize: 496.00µs
signing_step::sign_produced_cids: 108.00µs
verification_step::verify: 2.82ms
verify: 213.00µs
long-data (6.39ms; 53.812 MiB, 53.812 MiB): Long data trace
air::runner::execute_air: 6.39ms
preparation_step::preparation::parse_data: 2.40ms
try_from_slice: 2.36ms
preparation_step::preparation::prepare: 203.00µs
air::preparation_step::preparation::make_exec_ctx: 65.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 17.00µs
runner::execute: 9.00µs
runner::farewell: 1.16ms
from_success_result: 1.13ms
populate_outcome_from_contexts: 1.10ms
CallRequestsRepr.serialize: 14.00µs
InterpreterData::serialize: 589.00µs
signing_step::sign_produced_cids: 100.00µs
verification_step::verify: 2.39ms
verify: 943.00µs
multiple-cids10 (3.07ms; 52.438 MiB, 52.438 MiB): verifying multiple CIDs for single peer
air::runner::execute_air: 3.07ms
preparation_step::preparation::parse_data: 420.00µs
try_from_slice: 364.00µs
preparation_step::preparation::prepare: 221.00µs
air::preparation_step::preparation::make_exec_ctx: 55.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 43.00µs
runner::execute: 574.00µs
runner::farewell: 622.00µs
from_success_result: 600.00µs
populate_outcome_from_contexts: 544.00µs
CallRequestsRepr.serialize: 15.00µs
InterpreterData::serialize: 329.00µs
signing_step::sign_produced_cids: 102.00µs
verification_step::verify: 1.01ms
verify: 253.00µs
multiple-peers8 (12.00ms; 53.375 MiB, 53.375 MiB): verifying many CIDs for many peers
air::runner::execute_air: 12.00ms
preparation_step::preparation::parse_data: 1.60ms
try_from_slice: 1.53ms
preparation_step::preparation::prepare: 330.00µs
air::preparation_step::preparation::make_exec_ctx: 152.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 50.00µs
runner::execute: 3.96ms
runner::farewell: 1.57ms
from_success_result: 1.55ms
populate_outcome_from_contexts: 1.43ms
CallRequestsRepr.serialize: 14.00µs
InterpreterData::serialize: 1.16ms
signing_step::sign_produced_cids: 104.00µs
verification_step::verify: 4.30ms
verify: 1.18ms
multiple-sigs30 (26.20ms; 56.188 MiB, 56.188 MiB): signing multiple CIDs
air::runner::execute_air: 26.20ms
preparation_step::preparation::parse_data: 4.93ms
try_from_slice: 4.88ms
preparation_step::preparation::prepare: 438.00µs
air::preparation_step::preparation::make_exec_ctx: 261.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 49.00µs
runner::execute: 11.10ms
runner::farewell: 4.39ms
from_success_result: 4.37ms
populate_outcome_from_contexts: 4.17ms
CallRequestsRepr.serialize: 14.00µs
InterpreterData::serialize: 3.04ms
signing_step::sign_produced_cids: 742.00µs
verification_step::verify: 4.36ms
verify: 2.03ms
network-explore (3.35ms; 52.375 MiB, 52.375 MiB): 5 peers of network are discovered
air::runner::execute_air: 3.35ms
preparation_step::preparation::parse_data: 596.00µs
try_from_slice: 509.00µs
preparation_step::preparation::prepare: 249.00µs
air::preparation_step::preparation::make_exec_ctx: 46.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 74.00µs
runner::execute: 168.00µs
runner::farewell: 441.00µs
from_success_result: 418.00µs
populate_outcome_from_contexts: 376.00µs
CallRequestsRepr.serialize: 14.00µs
InterpreterData::serialize: 199.00µs
signing_step::sign_produced_cids: 105.00µs
verification_step::verify: 1.64ms
verify: 99.00µs
null (712.00µs; 52.375 MiB, 52.375 MiB): Empty data and null script
air::runner::execute_air: 712.00µs
preparation_step::preparation::parse_data: 16.00µs
preparation_step::preparation::prepare: 183.00µs
air::preparation_step::preparation::make_exec_ctx: 35.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 17.00µs
air_parser::parser::air_parser::parse: 18.00µs
runner::execute: 9.00µs
runner::farewell: 257.00µs
from_success_result: 237.00µs
populate_outcome_from_contexts: 204.00µs
CallRequestsRepr.serialize: 13.00µs
InterpreterData::serialize: 51.00µs
signing_step::sign_produced_cids: 101.00µs
verification_step::verify: 32.00µs
verify: 10.00µs
parser-10000-100 (31.70ms; 54.625 MiB, 54.625 MiB): long air script with lot of variable assignments
air::runner::execute_air: 31.70ms
preparation_step::preparation::parse_data: 16.00µs
preparation_step::preparation::prepare: 30.40ms
air::preparation_step::preparation::make_exec_ctx: 43.00µs
CallResultsRepr.deserialize: 12.00µs
air_parser::parser::air_parser::parse: 30.10ms
runner::execute: 27.00µs
runner::farewell: 284.00µs
from_success_result: 262.00µs
populate_outcome_from_contexts: 220.00µs
CallRequestsRepr.serialize: 12.00µs
InterpreterData::serialize: 56.00µs
signing_step::sign_produced_cids: 101.00µs
verification_step::verify: 33.00µs
verify: 10.00µs
parser-calls-10000-100 (26.50ms; 54.375 MiB, 54.375 MiB): multiple calls parser benchmark
air::runner::execute_air: 26.50ms
preparation_step::preparation::parse_data: 17.00µs
preparation_step::preparation::prepare: 24.80ms
runner::farewell: 927.00µs
from_success_result: 906.00µs
populate_outcome_from_contexts: 871.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 200.00µs
air_interpreter_data::interpreter_data::serialize: 483.00µs
signing_step::sign_produced_cids: 102.00µs
verification_step::verify: 2.61ms
verify: 2.21ms
call-requests500 (24.40ms; 57.375 MiB, 57.375 MiB): multiple call requests
air::runner::execute_air: 24.40ms
preparation_step::preparation::parse_data: 149.00µs
serialize: 15.00µs
try_from_slice: 51.00µs
preparation_step::preparation::prepare: 220.00µs
air::preparation_step::preparation::make_exec_ctx: 44.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 24.60ms
runner::execute: 31.00µs
runner::farewell: 414.00µs
from_success_result: 379.00µs
populate_outcome_from_contexts: 327.00µs
CallRequestsRepr.serialize: 21.00µs
InterpreterData::serialize: 71.00µs
signing_step::sign_produced_cids: 156.00µs
verification_step::verify: 34.00µs
CallResultsRepr.deserialize: 14.00µs
air_parser::parser::air_parser::parse: 49.00µs
runner::execute: 22.20ms
runner::farewell: 1.49ms
from_success_result: 1.46ms
populate_outcome_from_contexts: 1.34ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 1.07ms
air::farewell_step::outcome::InterpreterDataEnv::serialize: 23.00µs
air_interpreter_data::interpreter_data::serialize: 68.00µs
signing_step::sign_produced_cids: 103.00µs
verification_step::verify: 96.00µs
verify: 10.00µs
populate-map-multiple-keys (4.10ms; 53.000 MiB, 53.000 MiB): benchmarking a map insert operation
air::runner::execute_air: 4.10ms
preparation_step::preparation::parse_data: 116.00µs
try_from_slice: 72.00µs
preparation_step::preparation::prepare: 212.00µs
call-result-100mb (530.00ms; 580.375 MiB, 580.375 MiB): benchmarking
air::runner::execute_air: 530.00ms
preparation_step::preparation::parse_data: 49.20ms
serialize: 16.00µs
try_from_slice: 49.13ms
preparation_step::preparation::prepare: 195.00µs
air::preparation_step::preparation::make_exec_ctx: 40.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 35.00µs
runner::execute: 205.00ms
runner::farewell: 50.00ms
from_success_result: 50.00ms
populate_outcome_from_contexts: 50.00ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 16.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 14.40ms
air_interpreter_data::interpreter_data::serialize: 35.30ms
signing_step::sign_produced_cids: 109.00µs
verification_step::verify: 225.00ms
verify: 225.00ms
call-results500 (26.30ms; 54.438 MiB, 54.438 MiB): multiple call results
air::runner::execute_air: 26.30ms
preparation_step::preparation::parse_data: 232.00µs
serialize: 14.00µs
try_from_slice: 127.00µs
preparation_step::preparation::prepare: 421.00µs
air::preparation_step::preparation::make_exec_ctx: 229.00µs
CallResultsRepr.deserialize: 194.00µs
air_parser::parser::air_parser::parse: 50.00µs
runner::execute: 2.78ms
runner::farewell: 414.00µs
from_success_result: 393.00µs
populate_outcome_from_contexts: 356.00µs
CallRequestsRepr.serialize: 13.00µs
InterpreterData::serialize: 165.00µs
signing_step::sign_produced_cids: 101.00µs
verification_step::verify: 336.00µs
verify: 26.00µs
populate-map-single-key (3.40ms; 52.938 MiB, 52.938 MiB): benchmarking a map insert operation
air::runner::execute_air: 3.40ms
preparation_step::preparation::parse_data: 170.00µs
try_from_slice: 131.00µs
preparation_step::preparation::prepare: 216.00µs
runner::execute: 22.90ms
runner::farewell: 1.92ms
from_success_result: 1.89ms
populate_outcome_from_contexts: 1.42ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 120.00µs
air_interpreter_data::interpreter_data::serialize: 652.00µs
signing_step::sign_produced_cids: 548.00µs
verification_step::verify: 122.00µs
verify: 13.00µs
canon-map-100mb (1.11s; 1.305 GiB, 1.305 GiB): benchmarking
air::runner::execute_air: 1.11s
preparation_step::preparation::parse_data: 49.60ms
serialize: 16.00µs
try_from_slice: 49.43ms
preparation_step::preparation::prepare: 209.00µs
air::preparation_step::preparation::make_exec_ctx: 39.00µs
CallResultsRepr.deserialize: 10.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 46.00µs
runner::execute: 706.00ms
runner::farewell: 127.00ms
from_success_result: 127.00ms
populate_outcome_from_contexts: 127.00ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 15.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 37.40ms
air_interpreter_data::interpreter_data::serialize: 89.00ms
signing_step::sign_produced_cids: 112.00µs
verification_step::verify: 224.00ms
verify: 224.00ms
canon-map-key-by-lens (12.80ms; 55.312 MiB, 55.312 MiB): benchmarking a map insert operation
air::runner::execute_air: 12.80ms
preparation_step::preparation::parse_data: 2.46ms
serialize: 15.00µs
try_from_slice: 2.35ms
preparation_step::preparation::prepare: 533.00µs
air::preparation_step::preparation::make_exec_ctx: 351.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 55.00µs
runner::execute: 3.13ms
runner::farewell: 1.78ms
from_success_result: 1.75ms
populate_outcome_from_contexts: 1.42ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 120.00µs
air_interpreter_data::interpreter_data::serialize: 895.00µs
signing_step::sign_produced_cids: 101.00µs
verification_step::verify: 4.63ms
verify: 4.26ms
canon-map-key-element-by-lens (13.10ms; 55.312 MiB, 55.312 MiB): benchmarking a map insert operation
air::runner::execute_air: 13.10ms
preparation_step::preparation::parse_data: 2.49ms
serialize: 16.00µs
try_from_slice: 2.39ms
preparation_step::preparation::prepare: 541.00µs
air::preparation_step::preparation::make_exec_ctx: 357.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 54.00µs
runner::execute: 3.35ms
runner::farewell: 1.79ms
from_success_result: 1.77ms
populate_outcome_from_contexts: 1.43ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 121.00µs
air_interpreter_data::interpreter_data::serialize: 891.00µs
signing_step::sign_produced_cids: 103.00µs
verification_step::verify: 4.69ms
verify: 4.33ms
canon-map-multiple-keys (13.00ms; 54.562 MiB, 54.562 MiB): benchmarking a map insert operation
air::runner::execute_air: 13.00ms
preparation_step::preparation::parse_data: 227.00µs
serialize: 18.00µs
try_from_slice: 117.00µs
preparation_step::preparation::prepare: 225.00µs
air::preparation_step::preparation::make_exec_ctx: 42.00µs
CallResultsRepr.deserialize: 12.00µs
air_parser::parser::air_parser::parse: 50.00µs
runner::execute: 1.95ms
runner::farewell: 436.00µs
from_success_result: 412.00µs
runner::execute: 10.10ms
runner::farewell: 1.78ms
from_success_result: 1.75ms
populate_outcome_from_contexts: 1.39ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 15.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 96.00µs
air_interpreter_data::interpreter_data::serialize: 893.00µs
signing_step::sign_produced_cids: 112.00µs
verification_step::verify: 424.00µs
verify: 27.00µs
canon-map-scalar-multiple-keys (4.92ms; 53.125 MiB, 53.125 MiB): benchmarking a map insert operation
air::runner::execute_air: 4.92ms
preparation_step::preparation::parse_data: 210.00µs
serialize: 16.00µs
try_from_slice: 110.00µs
preparation_step::preparation::prepare: 214.00µs
air::preparation_step::preparation::make_exec_ctx: 42.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 46.00µs
runner::execute: 3.44ms
runner::farewell: 432.00µs
from_success_result: 408.00µs
populate_outcome_from_contexts: 367.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 21.00µs
air_interpreter_data::interpreter_data::serialize: 55.00µs
signing_step::sign_produced_cids: 104.00µs
verification_step::verify: 391.00µs
verify: 27.00µs
canon-map-scalar-single-key (3.86ms; 53.062 MiB, 53.062 MiB): benchmarking a map insert operation
air::runner::execute_air: 3.86ms
preparation_step::preparation::parse_data: 202.00µs
serialize: 16.00µs
try_from_slice: 101.00µs
preparation_step::preparation::prepare: 206.00µs
air::preparation_step::preparation::make_exec_ctx: 39.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 42.00µs
runner::execute: 2.39ms
runner::farewell: 426.00µs
from_success_result: 404.00µs
populate_outcome_from_contexts: 352.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 21.00µs
air_interpreter_data::interpreter_data::serialize: 66.00µs
signing_step::sign_produced_cids: 102.00µs
verification_step::verify: 402.00µs
verify: 40.00µs
canon-map-single-key (10.30ms; 54.438 MiB, 54.438 MiB): benchmarking a map insert operation
air::runner::execute_air: 10.30ms
preparation_step::preparation::parse_data: 192.00µs
serialize: 16.00µs
try_from_slice: 96.00µs
preparation_step::preparation::prepare: 199.00µs
air::preparation_step::preparation::make_exec_ctx: 39.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 40.00µs
runner::execute: 7.57ms
runner::farewell: 1.66ms
from_success_result: 1.64ms
populate_outcome_from_contexts: 1.35ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 107.00µs
air_interpreter_data::interpreter_data::serialize: 903.00µs
signing_step::sign_produced_cids: 102.00µs
verification_step::verify: 399.00µs
verify: 40.00µs
dashboard (6.15ms; 52.688 MiB, 52.688 MiB): big dashboard test
air::runner::execute_air: 6.15ms
preparation_step::preparation::parse_data: 519.00µs
try_from_slice: 435.00µs
preparation_step::preparation::prepare: 330.00µs
air::preparation_step::preparation::make_exec_ctx: 64.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 134.00µs
runner::execute: 1.17ms
runner::farewell: 488.00µs
from_success_result: 465.00µs
populate_outcome_from_contexts: 418.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 23.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 40.00µs
air_interpreter_data::interpreter_data::serialize: 119.00µs
signing_step::sign_produced_cids: 107.00µs
verification_step::verify: 3.40ms
verify: 204.00µs
lense-100mb (1.09s; 1.207 GiB, 1.207 GiB): benchmarking
air::runner::execute_air: 1.09s
preparation_step::preparation::parse_data: 49.00ms
serialize: 16.00µs
try_from_slice: 48.93ms
preparation_step::preparation::prepare: 220.00µs
air::preparation_step::preparation::make_exec_ctx: 44.00µs
CallResultsRepr.deserialize: 12.00µs
air_parser::parser::air_parser::parse: 48.00µs
runner::execute: 686.00ms
runner::farewell: 125.00ms
from_success_result: 125.00ms
populate_outcome_from_contexts: 125.00ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 15.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 37.10ms
air_interpreter_data::interpreter_data::serialize: 88.10ms
signing_step::sign_produced_cids: 111.00µs
verification_step::verify: 226.00ms
verify: 225.00ms
long-data (3.73ms; 53.125 MiB, 53.125 MiB): Long data trace
air::runner::execute_air: 3.73ms
preparation_step::preparation::parse_data: 969.00µs
serialize: 15.00µs
try_from_slice: 865.00µs
preparation_step::preparation::prepare: 205.00µs
air::preparation_step::preparation::make_exec_ctx: 66.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 17.00µs
runner::execute: 9.00µs
runner::farewell: 416.00µs
from_success_result: 395.00µs
populate_outcome_from_contexts: 360.00µs
CallRequestsRepr.serialize: 13.00µs
InterpreterData::serialize: 179.00µs
signing_step::sign_produced_cids: 105.00µs
verification_step::verify: 401.00µs
verify: 68.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 27.00µs
air_interpreter_data::interpreter_data::serialize: 97.00µs
signing_step::sign_produced_cids: 98.00µs
verification_step::verify: 1.92ms
verify: 490.00µs
map-100mb (1.12s; 1.305 GiB, 1.305 GiB): benchmarking
air::runner::execute_air: 1.12s
preparation_step::preparation::parse_data: 50.40ms
serialize: 16.00µs
try_from_slice: 50.23ms
preparation_step::preparation::prepare: 209.00µs
air::preparation_step::preparation::make_exec_ctx: 38.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 44.00µs
runner::execute: 712.00ms
runner::farewell: 130.00ms
from_success_result: 130.00ms
populate_outcome_from_contexts: 130.00ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 16.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 38.30ms
air_interpreter_data::interpreter_data::serialize: 91.70ms
signing_step::sign_produced_cids: 111.00µs
verification_step::verify: 224.00ms
verify: 224.00ms
multiple-cids10 (2.89ms; 52.500 MiB, 52.500 MiB): verifying multiple CIDs for single peer
air::runner::execute_air: 2.89ms
preparation_step::preparation::parse_data: 325.00µs
try_from_slice: 243.00µs
preparation_step::preparation::prepare: 226.00µs
air::preparation_step::preparation::make_exec_ctx: 56.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 44.00µs
runner::execute: 561.00µs
runner::farewell: 451.00µs
from_success_result: 425.00µs
populate_outcome_from_contexts: 354.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 17.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 32.00µs
air_interpreter_data::interpreter_data::serialize: 103.00µs
signing_step::sign_produced_cids: 103.00µs
verification_step::verify: 1.09ms
verify: 262.00µs
multiple-peers8 (11.10ms; 53.438 MiB, 53.438 MiB): verifying many CIDs for many peers
air::runner::execute_air: 11.10ms
preparation_step::preparation::parse_data: 1.12ms
try_from_slice: 1.04ms
preparation_step::preparation::prepare: 302.00µs
air::preparation_step::preparation::make_exec_ctx: 126.00µs
CallResultsRepr.deserialize: 10.00µs
air_parser::parser::air_parser::parse: 51.00µs
runner::execute: 3.76ms
runner::farewell: 924.00µs
from_success_result: 900.00µs
populate_outcome_from_contexts: 777.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 15.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 60.00µs
air_interpreter_data::interpreter_data::serialize: 428.00µs
signing_step::sign_produced_cids: 101.00µs
verification_step::verify: 4.79ms
verify: 1.24ms
multiple-sigs30 (23.10ms; 55.812 MiB, 55.812 MiB): signing multiple CIDs
air::runner::execute_air: 23.10ms
preparation_step::preparation::parse_data: 3.67ms
try_from_slice: 3.58ms
preparation_step::preparation::prepare: 445.00µs
air::preparation_step::preparation::make_exec_ctx: 272.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 47.00µs
runner::execute: 10.80ms
runner::farewell: 2.78ms
from_success_result: 2.75ms
populate_outcome_from_contexts: 2.59ms
air::farewell_step::outcome::CallRequestsRepr.serialize: 13.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 208.00µs
air_interpreter_data::interpreter_data::serialize: 1.28ms
signing_step::sign_produced_cids: 675.00µs
verification_step::verify: 4.51ms
verify: 2.11ms
network-explore (3.09ms; 52.375 MiB, 52.375 MiB): 5 peers of network are discovered
air::runner::execute_air: 3.09ms
preparation_step::preparation::parse_data: 219.00µs
try_from_slice: 137.00µs
preparation_step::preparation::prepare: 238.00µs
air::preparation_step::preparation::make_exec_ctx: 47.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 68.00µs
runner::execute: 173.00µs
runner::farewell: 310.00µs
from_success_result: 287.00µs
populate_outcome_from_contexts: 245.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 18.00µs
air_interpreter_data::interpreter_data::serialize: 38.00µs
signing_step::sign_produced_cids: 102.00µs
verification_step::verify: 1.93ms
verify: 63.00µs
null (988.00µs; 52.375 MiB, 52.375 MiB): Empty data and null script
air::runner::execute_air: 988.00µs
preparation_step::preparation::parse_data: 176.00µs
serialize: 33.00µs
try_from_slice: 38.00µs
preparation_step::preparation::prepare: 207.00µs
air::preparation_step::preparation::make_exec_ctx: 47.00µs
CallResultsRepr.deserialize: 14.00µs
air_parser::parser::air_parser::parse: 22.00µs
runner::execute: 12.00µs
runner::farewell: 306.00µs
from_success_result: 277.00µs
populate_outcome_from_contexts: 234.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 16.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 22.00µs
air_interpreter_data::interpreter_data::serialize: 22.00µs
signing_step::sign_produced_cids: 104.00µs
verification_step::verify: 41.00µs
verify: 12.00µs
parser-10000-100 (31.20ms; 54.625 MiB, 54.625 MiB): long air script with lot of variable assignments
air::runner::execute_air: 31.20ms
preparation_step::preparation::parse_data: 140.00µs
serialize: 27.00µs
try_from_slice: 30.00µs
preparation_step::preparation::prepare: 29.80ms
air::preparation_step::preparation::make_exec_ctx: 42.00µs
CallResultsRepr.deserialize: 12.00µs
air_parser::parser::air_parser::parse: 29.60ms
runner::execute: 24.00µs
runner::farewell: 272.00µs
from_success_result: 247.00µs
populate_outcome_from_contexts: 213.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 18.00µs
air_interpreter_data::interpreter_data::serialize: 21.00µs
signing_step::sign_produced_cids: 99.00µs
verification_step::verify: 34.00µs
verify: 10.00µs
parser-air-100mb (676.00ms; 110.500 MiB, 110.500 MiB): multiple calls parser benchmark
air::runner::execute_air: 676.00ms
preparation_step::preparation::parse_data: 141.00µs
serialize: 27.00µs
try_from_slice: 35.00µs
preparation_step::preparation::prepare: 651.00ms
air::preparation_step::preparation::make_exec_ctx: 42.00µs
CallResultsRepr.deserialize: 11.00µs
air_parser::parser::air_parser::parse: 651.00ms
runner::execute: 27.00µs
runner::farewell: 264.00µs
from_success_result: 243.00µs
populate_outcome_from_contexts: 208.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 13.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 17.00µs
air_interpreter_data::interpreter_data::serialize: 21.00µs
signing_step::sign_produced_cids: 98.00µs
verification_step::verify: 32.00µs
verify: 9.00µs
parser-calls-10000-100 (25.70ms; 54.375 MiB, 54.375 MiB): multiple calls parser benchmark
air::runner::execute_air: 25.70ms
preparation_step::preparation::parse_data: 140.00µs
serialize: 27.00µs
try_from_slice: 30.00µs
preparation_step::preparation::prepare: 24.30ms
air::preparation_step::preparation::make_exec_ctx: 40.00µs
CallResultsRepr.deserialize: 12.00µs
air_parser::parser::air_parser::parse: 24.10ms
runner::execute: 26.00µs
runner::farewell: 261.00µs
from_success_result: 237.00µs
populate_outcome_from_contexts: 204.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 12.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 17.00µs
air_interpreter_data::interpreter_data::serialize: 20.00µs
signing_step::sign_produced_cids: 99.00µs
verification_step::verify: 33.00µs
verify: 10.00µs
populate-map-multiple-keys (4.21ms; 53.000 MiB, 53.000 MiB): benchmarking a map insert operation
air::runner::execute_air: 4.21ms
preparation_step::preparation::parse_data: 165.00µs
serialize: 16.00µs
try_from_slice: 65.00µs
preparation_step::preparation::prepare: 216.00µs
air::preparation_step::preparation::make_exec_ctx: 40.00µs
CallResultsRepr.deserialize: 12.00µs
air_parser::parser::air_parser::parse: 50.00µs
runner::execute: 2.83ms
runner::farewell: 357.00µs
from_success_result: 334.00µs
populate_outcome_from_contexts: 298.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 22.00µs
air_interpreter_data::interpreter_data::serialize: 62.00µs
signing_step::sign_produced_cids: 112.00µs
verification_step::verify: 398.00µs
verify: 24.00µs
populate-map-single-key (3.48ms; 52.938 MiB, 52.938 MiB): benchmarking a map insert operation
air::runner::execute_air: 3.48ms
preparation_step::preparation::parse_data: 166.00µs
serialize: 16.00µs
try_from_slice: 64.00µs
preparation_step::preparation::prepare: 209.00µs
air::preparation_step::preparation::make_exec_ctx: 41.00µs
CallResultsRepr.deserialize: 12.00µs
air_parser::parser::air_parser::parse: 45.00µs
runner::execute: 1.97ms
runner::farewell: 491.00µs
from_success_result: 464.00µs
populate_outcome_from_contexts: 407.00µs
air::farewell_step::outcome::CallRequestsRepr.serialize: 14.00µs
air::farewell_step::outcome::InterpreterDataEnv::serialize: 22.00µs
air_interpreter_data::interpreter_data::serialize: 89.00µs
signing_step::sign_produced_cids: 103.00µs
verification_step::verify: 402.00µs
verify: 40.00µs
Machine c1f3ea5950db0a10b44da931c25774d64ab25084f47d504f72f311e694550ff1:
Platform: macOS-12.0.1-x86_64-i386-64bit
Timestamp: 2023-02-13 13:19:34.106863+00:00

View File

@ -21,3 +21,5 @@ itertools = "0.10.5"
maplit = "1.0.2"
serde_json = "1.0.97"
serde = "1.0.165"
hex = "0.4.3"
rand = "0.8.5"

View File

@ -27,6 +27,11 @@ for bench in multiple-cids10 \
parser-10000-100 \
parser-calls-10000-100 \
null \
lense-100mb \
map-100mb \
canon-map-100mb \
call-result-100mb \
parser-air-100mb \
;
do
echo "Generating ${bench} ..." >&2

View File

@ -20,6 +20,8 @@ use std::path::PathBuf;
const PARTICLE_ID: &str = "0123456789ABCDEF";
const MAX_STREAM_SIZE: usize = 1023;
const MB: usize = 1024 * 1024;
const SEED: u64 = 123456789;
mod calls;
mod cid_benchmarking;
@ -65,6 +67,16 @@ enum Bench {
#[command(name = "parser-calls-10000-100")]
ParserCalls10000_100,
Null,
#[command(name = "lense-100mb")]
Lense100MB,
#[command(name = "map-100mb")]
Map100MB,
#[command(name = "canon-map-100mb")]
CanonMap100MB,
#[command(name = "call-result-100mb")]
CallResult100MB,
#[command(name = "parser-air-100mb")]
ParserAir100MB,
}
fn main() {
@ -96,6 +108,11 @@ fn main() {
Bench::Parser10000_100 => parser_10000_100(),
Bench::ParserCalls10000_100 => parser_calls(10000, 100),
Bench::Null => null(),
Bench::CallResult100MB => mem_consumption_with_size_in_mb(100),
Bench::Lense100MB => mem_consumption_w_lense_with_size_in_mb(100),
Bench::Map100MB => mem_consumption_w_map_2_scalar_with_size_in_mb(100),
Bench::CanonMap100MB => mem_consumption_w_canon_map_with_size_in_mb(100),
Bench::ParserAir100MB => mem_consumption_air_100mb(280000, 10),
};
save_data(&args.dest_dir, data).unwrap();
@ -735,6 +752,250 @@ fn big_values_data() -> Data {
}
}
fn generate_random_data(random_data_size: usize) -> Vec<u8> {
use rand::rngs::StdRng;
use rand::Rng;
use rand::SeedableRng;
// hex::encode later prints out every byte as 2 bytes sequence.
let random_data_size = random_data_size / 2 * MB;
let mut rng = StdRng::seed_from_u64(SEED);
let mut random_data = vec![0u8; random_data_size];
rng.fill(random_data.as_mut_slice());
random_data
}
fn mem_consumption_with_size_in_mb(data_size: usize) -> Data {
let random_data = generate_random_data(data_size);
let air_script = format!(
include_str!("mem_consumption_generic.air.tmpl"),
data = format_args!("\"{}\"", hex::encode(random_data))
);
let exec = AirScriptExecutor::<NativeAirRunner>::new(
TestRunParameters::from_init_peer_id("init_peer_id").with_particle_id(PARTICLE_ID),
vec![],
vec![],
&air_script,
)
.unwrap();
let keypair = exec
.get_network()
.get_named_peer_env("other_peer_id")
.expect("main peer")
.borrow()
.get_peer()
.get_keypair()
.clone();
let prev_res = exec.execute_one("init_peer_id").unwrap();
let peer_id: String = exec.resolve_name("other_peer_id").to_string();
let init_peer_id: String = exec.resolve_name("init_peer_id").to_string();
Data {
air: exec.get_transformed_air_script().to_string(),
prev_data: vec![],
cur_data: prev_res.data,
params_json: hashmap! {
"comment".to_owned() => "benchmarking".to_owned(),
"particle-id".to_owned() => PARTICLE_ID.to_owned(),
"current-peer-id".to_owned() => peer_id.clone(),
"init-peer-id".to_owned() => init_peer_id,
},
call_results: None,
keypair: bs58::encode(keypair.to_vec()).into_string(),
}
}
fn mem_consumption_w_lense_with_size_in_mb(data_size: usize) -> Data {
let random_data = generate_random_data(data_size);
let air_script = format!(
include_str!("mem_consumption_lense.air.tmpl"),
data = format_args!("{{\"attrib\": \"{}\"}}", hex::encode(random_data))
);
let exec = AirScriptExecutor::<NativeAirRunner>::new(
TestRunParameters::from_init_peer_id("init_peer_id").with_particle_id(PARTICLE_ID),
vec![],
vec![],
&air_script,
)
.unwrap();
let keypair = exec
.get_network()
.get_named_peer_env("other_peer_id")
.expect("main peer")
.borrow()
.get_peer()
.get_keypair()
.clone();
let prev_res = exec.execute_one("init_peer_id").unwrap();
let peer_id: String = exec.resolve_name("other_peer_id").to_string();
let init_peer_id: String = exec.resolve_name("init_peer_id").to_string();
Data {
air: exec.get_transformed_air_script().to_string(),
prev_data: vec![],
cur_data: prev_res.data,
params_json: hashmap! {
"comment".to_owned() => "benchmarking".to_owned(),
"particle-id".to_owned() => PARTICLE_ID.to_owned(),
"current-peer-id".to_owned() => peer_id.clone(),
"init-peer-id".to_owned() => init_peer_id,
},
call_results: None,
keypair: bs58::encode(keypair.to_vec()).into_string(),
}
}
fn mem_consumption_w_map_2_scalar_with_size_in_mb(data_size: usize) -> Data {
let random_data = generate_random_data(data_size);
let air_script = format!(
include_str!("mem_consumption_canon_map.air.tmpl"),
data = format_args!("\"{}\"", hex::encode(random_data))
);
let exec = AirScriptExecutor::<NativeAirRunner>::new(
TestRunParameters::from_init_peer_id("init_peer_id").with_particle_id(PARTICLE_ID),
vec![],
vec![],
&air_script,
)
.unwrap();
let keypair = exec
.get_network()
.get_named_peer_env("other_peer_id")
.expect("main peer")
.borrow()
.get_peer()
.get_keypair()
.clone();
let prev_res = exec.execute_one("init_peer_id").unwrap();
let peer_id: String = exec.resolve_name("other_peer_id").to_string();
let init_peer_id: String = exec.resolve_name("init_peer_id").to_string();
Data {
air: exec.get_transformed_air_script().to_string(),
prev_data: vec![],
cur_data: prev_res.data,
params_json: hashmap! {
"comment".to_owned() => "benchmarking".to_owned(),
"particle-id".to_owned() => PARTICLE_ID.to_owned(),
"current-peer-id".to_owned() => peer_id.clone(),
"init-peer-id".to_owned() => init_peer_id,
},
call_results: None,
keypair: bs58::encode(keypair.to_vec()).into_string(),
}
}
fn mem_consumption_w_canon_map_with_size_in_mb(data_size: usize) -> Data {
let random_data = generate_random_data(data_size);
let air_script = format!(
include_str!("mem_consumption_canon_map_2.air.tmpl"),
data = format_args!("\"{}\"", hex::encode(random_data))
);
let exec = AirScriptExecutor::<NativeAirRunner>::new(
TestRunParameters::from_init_peer_id("init_peer_id").with_particle_id(PARTICLE_ID),
vec![],
vec![],
&air_script,
)
.unwrap();
let keypair = exec
.get_network()
.get_named_peer_env("other_peer_id")
.expect("main peer")
.borrow()
.get_peer()
.get_keypair()
.clone();
let prev_res = exec.execute_one("init_peer_id").unwrap();
let peer_id: String = exec.resolve_name("other_peer_id").to_string();
let init_peer_id: String = exec.resolve_name("init_peer_id").to_string();
Data {
air: exec.get_transformed_air_script().to_string(),
prev_data: vec![],
cur_data: prev_res.data,
params_json: hashmap! {
"comment".to_owned() => "benchmarking".to_owned(),
"particle-id".to_owned() => PARTICLE_ID.to_owned(),
"current-peer-id".to_owned() => peer_id.clone(),
"init-peer-id".to_owned() => init_peer_id,
},
call_results: None,
keypair: bs58::encode(keypair.to_vec()).into_string(),
}
}
fn mem_consumption_air_100mb(calls: usize, vars: usize) -> Data {
let (keypair, peer_id) = derive_dummy_keypair("init_peer_id");
let particle_id = "particle_id";
let vars = (0..vars).map(|n| format!("var{}", n)).collect_vec();
let init_var = vars[0].clone();
let statements = vars
.iter()
.cycle()
.take(calls)
.tuple_windows()
.map(|(a, b)| format!(r#"(call {a} ("serv" "func") [] {b})"#))
.collect_vec();
fn build_tree(statements: &[String]) -> String {
assert!(!statements.is_empty());
if statements.len() == 1 {
statements[0].clone()
} else {
let mid = statements.len() / 2;
format!(
"(seq {} {})",
build_tree(&statements[..mid]),
build_tree(&statements[mid..])
)
}
}
let tree = build_tree(&statements);
let air = format!(
r#"(seq (call "peer" ("serv" "func") [] {}) {})"#,
init_var, tree
);
Data {
air,
prev_data: vec![],
cur_data: vec![],
call_results: None,
keypair: bs58::encode(keypair.as_inner().to_vec()).into_string(),
params_json: hashmap! {
"comment".to_owned() => "multiple calls parser benchmark".to_owned(),
"particle-id".to_owned() => particle_id.to_owned(),
"current-peer-id".to_owned() => peer_id.clone(),
"init-peer-id".to_owned() => peer_id,
},
}
}
fn parser_10000_100() -> Data {
let air_script = include_str!("parser_10000_100.air");

View File

@ -0,0 +1,15 @@
(seq
(call "init_peer_id" ("" "init") [] data) ; ok = [{data}]
(seq
(seq
(fold data unused
(seq
(ap ("key" unused) %map)
(next unused)
)
)
(canon "other_peer_id" %map new_data)
)
(canon "init_peer_id" $data #$data)
)
)

View File

@ -0,0 +1,15 @@
(seq
(call "init_peer_id" ("" "init") [] data) ; ok = [{data}]
(seq
(seq
(fold data unused
(seq
(ap ("key" unused) %map)
(next unused)
)
)
(canon "other_peer_id" %map #%new_data)
)
(canon "init_peer_id" $data #$new_data)
)
)

View File

@ -0,0 +1,9 @@
(seq
(call "init_peer_id" ("" "init") [] data) ; ok = [{data}]
(seq
(fold data unused
(next unused)
)
(canon "other_peer_id" %map #%canon)
)
)

View File

@ -0,0 +1,12 @@
(seq
(call "init_peer_id" ("" "init") [] data) ; ok = [{data}]
(seq
(fold data unused
(seq
(ap unused.$.attrib $data)
(next unused)
)
)
(canon "other_peer_id" $data #$data)
)
)