Skip to content

experiment: trivial change to trigger CI#120

Open
crusso wants to merge 1 commit intomainfrom
claudio/test
Open

experiment: trivial change to trigger CI#120
crusso wants to merge 1 commit intomainfrom
claudio/test

Conversation

@crusso
Copy link
Copy Markdown

@crusso crusso commented Mar 19, 2025

No description provided.

@crusso crusso changed the title trivial change to trigger CI experiment: trivial change to trigger CI Mar 19, 2025
@github-actions
Copy link
Copy Markdown

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 upgrade
Motoko 278_879 513_370 ($\textcolor{red}{0.01\%}$) 23_340 ($\textcolor{red}{0.25\%}$) 19_183 ($\textcolor{green}{-0.32\%}$) 20_394 ($\textcolor{green}{-0.33\%}$) 162_143 ($\textcolor{red}{0.01\%}$)
Rust 902_362 516_184 92_673 118_753 113_669 1_499_571

DIP721 NFT

binary_size init mint_token transfer_token upgrade
Motoko 225_006 482_239 31_104 8_880 92_429
Rust 931_779 205_310 309_520 73_609 1_635_207 ($\textcolor{red}{0.00\%}$)

Statistics

  • binary_size: no change
  • max_mem: no change
  • cycles: -0.06% [-0.25%, 0.12%]

Overall Statistics

  • binary_size: no change
  • max_mem: no change
  • cycles: -0.06% [-0.25%, 0.12%]

@github-actions
Copy link
Copy Markdown

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

Sample Dapps

Measure the performance of some typical dapps:

  • Basic DAO,
    with heartbeat disabled to make profiling easier. We have a separate benchmark to measure heartbeat performance.
  • DIP721 NFT

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 upgrade
Motoko 278_879 513_370 23_340 19_183 20_394 162_143
Rust 902_362 516_184 92_673 118_753 113_669 1_499_571

DIP721 NFT

binary_size init mint_token transfer_token upgrade
Motoko 225_006 482_239 31_104 8_880 92_429
Rust 931_779 205_310 309_520 73_609 1_635_207

Environment

  • dfx 0.24.0
  • Motoko compiler 0.13.3 (source ff4il9yc-sfakbpl1-8z4dm2d6-ybdjncj7)
  • rustc 1.81.0 (eeb90cda1 2024-09-04)
  • ic-repl 0.7.6
  • ic-wasm 0.9.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant