dfinity / canister-profiling

Collection of canister performance benchmarks
Apache License 2.0
21 stars 8 forks source link

refactor makefile #81

Closed chenyan-dfinity closed 11 months ago

github-actions[bot] commented 11 months ago

Note Diffing the performance result against the published result from main branch. Unchanged benchmarks are omitted.

Basic DAO

binary_size init transfer_token submit_proposal vote_proposal
Motoko 230_242 37_638 ($\textcolor{red}{0.06\%}$) 16_286 ($\textcolor{green}{-0.02\%}$) 12_714 14_163 ($\textcolor{green}{-0.16\%}$)
Rust 718_379 472_385 86_786 ($\textcolor{green}{-0.06\%}$) 105_263 116_229

DIP721 NFT

Note Same as main branch, skipping.

Statistics

Heartbeat

binary_size heartbeat
Motoko 123_357 3_758 ($\textcolor{green}{-49.21\%}$)
Rust 23_625 785

Timer

Note Same as main branch, skipping.

Statistics

github-actions[bot] commented 11 months ago

Note The flamegraph link only works after you merge. Unchanged benchmarks are omitted.

Sample Dapps

Measure the performance of some typical dapps:

Note

  • The cost difference is mainly due to the Candid serialization cost.
  • Motoko statically compiles/specializes the serialization code for each method, whereas in Rust, we use serde to dynamically deserialize data based on data on the wire.
  • We could improve the performance on the Rust side by using parser combinators. But it is a challenge to maintain the ergonomics provided by serde.
  • For real-world applications, we tend to send small data for each endpoint, which makes the Candid overhead in Rust tolerable.

Basic DAO

binary_size init transfer_token submit_proposal vote_proposal
Motoko 230_242 37_638 16_286 12_714 14_163
Rust 718_379 472_385 86_786 105_263 116_229

DIP721 NFT

binary_size init mint_token transfer_token
Motoko 188_321 12_267 22_357 4_729
Rust 778_280 125_293 325_017 77_500

Heartbeat / Timer

Measure the cost of empty heartbeat and timer job.

Heartbeat

binary_size heartbeat
Motoko 123_357 3_758
Rust 23_625 785

Timer

binary_size setTimer cancelTimer
Motoko 129_636 15_227 1_684
Rust 443_367 43_417 7_497
chenyan-dfinity commented 11 months ago

That's also new to me! ChatGPT told me so :)