anchor/bench/STACK_MEMORY.md

36 KiB

Stack Memory

All notable changes in stack memory usage will be documented in this file.

The changes are calculated by comparing the current results with the last version's results. Increase in usage is shown with 🔴 and decrease is shown with 🟢.

The programs and their tests are located in /tests/bench.

Note Results documented in this file are autogenerated. Running the tests will update the current results when necessary, manually editing the results should be avoided.

Warning Results may vary depending on Solana version.

[Unreleased]

Solana version: 1.18.17

Instruction Stack Memory -
account_info1 144 -
account_info2 144 -
account_info4 144 -
account_info8 144 -
account_empty_init1 144 -
account_empty_init2 144 -
account_empty_init4 192 -
account_empty_init8 224 -
account_empty1 144 -
account_empty2 144 -
account_empty4 144 -
account_empty8 144 -
account_sized_init1 176 -
account_sized_init2 192 -
account_sized_init4 224 -
account_sized_init8 288 -
account_sized1 144 -
account_sized2 144 -
account_sized4 144 -
account_sized8 144 -
account_unsized_init1 192 -
account_unsized_init2 224 -
account_unsized_init4 288 -
account_unsized_init8 416 -
account_unsized1 144 -
account_unsized2 144 -
account_unsized4 144 -
account_unsized8 144 -
boxed_account_empty_init1 144 -
boxed_account_empty_init2 144 -
boxed_account_empty_init4 192 -
boxed_account_empty_init8 224 -
boxed_account_empty1 144 -
boxed_account_empty2 144 -
boxed_account_empty4 144 -
boxed_account_empty8 144 -
boxed_account_sized_init1 144 -
boxed_account_sized_init2 144 -
boxed_account_sized_init4 192 -
boxed_account_sized_init8 224 -
boxed_account_sized1 144 -
boxed_account_sized2 144 -
boxed_account_sized4 144 -
boxed_account_sized8 144 -
boxed_account_unsized_init1 144 -
boxed_account_unsized_init2 144 -
boxed_account_unsized_init4 192 -
boxed_account_unsized_init8 224 -
boxed_account_unsized1 144 -
boxed_account_unsized2 144 -
boxed_account_unsized4 144 -
boxed_account_unsized8 144 -
boxed_interface_account_mint1 144 -
boxed_interface_account_mint2 144 -
boxed_interface_account_mint4 144 -
boxed_interface_account_mint8 144 -
boxed_interface_account_token1 144 -
boxed_interface_account_token2 144 -
boxed_interface_account_token4 144 -
boxed_interface_account_token8 144 -
interface_account_mint1 144 -
interface_account_mint2 144 -
interface_account_mint4 144 -
interface_account_mint8 144 -
interface_account_token1 144 -
interface_account_token2 144 -
interface_account_token4 144 -
interface1 144 -
interface2 144 -
interface4 144 -
interface8 144 -
program1 144 -
program2 144 -
program4 144 -
program8 144 -
signer1 144 -
signer2 144 -
signer4 144 -
signer8 144 -
system_account1 144 -
system_account2 144 -
system_account4 144 -
system_account8 144 -
unchecked_account1 144 -
unchecked_account2 144 -
unchecked_account4 144 -
unchecked_account8 144 -

Notable changes


[0.30.1]

Solana version: 1.18.17

Instruction Stack Memory -
account_info1 144 -
account_info2 144 -
account_info4 144 -
account_info8 144 -
account_empty_init1 144 -
account_empty_init2 144 -
account_empty_init4 192 -
account_empty_init8 224 -
account_empty1 144 -
account_empty2 144 -
account_empty4 144 -
account_empty8 144 -
account_sized_init1 176 -
account_sized_init2 192 -
account_sized_init4 224 -
account_sized_init8 288 -
account_sized1 144 -
account_sized2 144 -
account_sized4 144 -
account_sized8 144 -
account_unsized_init1 192 -
account_unsized_init2 224 -
account_unsized_init4 288 -
account_unsized_init8 416 -
account_unsized1 144 -
account_unsized2 144 -
account_unsized4 144 -
account_unsized8 144 -
boxed_account_empty_init1 144 -
boxed_account_empty_init2 144 -
boxed_account_empty_init4 192 -
boxed_account_empty_init8 224 -
boxed_account_empty1 144 -
boxed_account_empty2 144 -
boxed_account_empty4 144 -
boxed_account_empty8 144 -
boxed_account_sized_init1 144 -
boxed_account_sized_init2 144 -
boxed_account_sized_init4 192 -
boxed_account_sized_init8 224 -
boxed_account_sized1 144 -
boxed_account_sized2 144 -
boxed_account_sized4 144 -
boxed_account_sized8 144 -
boxed_account_unsized_init1 144 -
boxed_account_unsized_init2 144 -
boxed_account_unsized_init4 192 -
boxed_account_unsized_init8 224 -
boxed_account_unsized1 144 -
boxed_account_unsized2 144 -
boxed_account_unsized4 144 -
boxed_account_unsized8 144 -
boxed_interface_account_mint1 144 -
boxed_interface_account_mint2 144 -
boxed_interface_account_mint4 144 -
boxed_interface_account_mint8 144 -
boxed_interface_account_token1 144 -
boxed_interface_account_token2 144 -
boxed_interface_account_token4 144 -
boxed_interface_account_token8 144 -
interface_account_mint1 144 -
interface_account_mint2 144 -
interface_account_mint4 144 -
interface_account_mint8 144 -
interface_account_token1 144 -
interface_account_token2 144 -
interface_account_token4 144 -
interface1 144 -
interface2 144 -
interface4 144 -
interface8 144 -
program1 144 -
program2 144 -
program4 144 -
program8 144 -
signer1 144 -
signer2 144 -
signer4 144 -
signer8 144 -
system_account1 144 -
system_account2 144 -
system_account4 144 -
system_account8 144 -
unchecked_account1 144 -
unchecked_account2 144 -
unchecked_account4 144 -
unchecked_account8 144 -

Notable changes


[0.30.0]

Solana version: 1.18.8

Instruction Stack Memory -
account_info1 144 🔴 +16 (12.50%)
account_info2 144 🔴 +16 (12.50%)
account_info4 144 🔴 +16 (12.50%)
account_info8 144 🔴 +16 (12.50%)
account_empty_init1 144 🟢 -32 (18.18%)
account_empty_init2 144 🟢 -64 (30.77%)
account_empty_init4 192 🟢 -16 (7.69%)
account_empty_init8 224 🟢 -16 (6.67%)
account_empty1 144 🔴 +16 (12.50%)
account_empty2 144 🔴 +16 (12.50%)
account_empty4 144 🔴 +16 (12.50%)
account_empty8 144 🔴 +16 (12.50%)
account_sized_init1 176 🟢 -32 (15.38%)
account_sized_init2 192 🟢 -64 (25.00%)
account_sized_init4 224 🟢 -16 (6.67%)
account_sized_init8 288 🟢 -16 (5.26%)
account_sized1 144 🔴 +16 (12.50%)
account_sized2 144 🔴 +16 (12.50%)
account_sized4 144 🔴 +16 (12.50%)
account_sized8 144 🔴 +16 (12.50%)
account_unsized_init1 192 🟢 -32 (14.29%)
account_unsized_init2 224 🟢 -72 (24.32%)
account_unsized_init4 288 🟢 -16 (5.26%)
account_unsized_init8 416 🟢 -16 (3.70%)
account_unsized1 144 🔴 +16 (12.50%)
account_unsized2 144 -
account_unsized4 144 🔴 +16 (12.50%)
account_unsized8 144 🔴 +16 (12.50%)
boxed_account_empty_init1 144 🟢 -32 (18.18%)
boxed_account_empty_init2 144 🟢 -64 (30.77%)
boxed_account_empty_init4 192 🟢 -16 (7.69%)
boxed_account_empty_init8 224 🟢 -16 (6.67%)
boxed_account_empty1 144 🔴 +16 (12.50%)
boxed_account_empty2 144 🔴 +16 (12.50%)
boxed_account_empty4 144 -
boxed_account_empty8 144 -
boxed_account_sized_init1 144 🟢 -32 (18.18%)
boxed_account_sized_init2 144 🟢 -64 (30.77%)
boxed_account_sized_init4 192 🟢 -16 (7.69%)
boxed_account_sized_init8 224 🟢 -16 (6.67%)
boxed_account_sized1 144 🔴 +16 (12.50%)
boxed_account_sized2 144 🔴 +16 (12.50%)
boxed_account_sized4 144 -
boxed_account_sized8 144 -
boxed_account_unsized_init1 144 🟢 -32 (18.18%)
boxed_account_unsized_init2 144 🟢 -64 (30.77%)
boxed_account_unsized_init4 192 🟢 -16 (7.69%)
boxed_account_unsized_init8 224 🟢 -16 (6.67%)
boxed_account_unsized1 144 🔴 +16 (12.50%)
boxed_account_unsized2 144 -
boxed_account_unsized4 144 🔴 +16 (12.50%)
boxed_account_unsized8 144 🔴 +16 (12.50%)
boxed_interface_account_mint1 144 🔴 +16 (12.50%)
boxed_interface_account_mint2 144 🔴 +16 (12.50%)
boxed_interface_account_mint4 144 -
boxed_interface_account_mint8 144 -
boxed_interface_account_token1 144 🔴 +16 (12.50%)
boxed_interface_account_token2 144 🔴 +16 (12.50%)
boxed_interface_account_token4 144 -
boxed_interface_account_token8 144 -
interface_account_mint1 144 🔴 +16 (12.50%)
interface_account_mint2 144 🔴 +16 (12.50%)
interface_account_mint4 144 🔴 +16 (12.50%)
interface_account_mint8 144 🔴 +16 (12.50%)
interface_account_token1 144 🔴 +16 (12.50%)
interface_account_token2 144 🔴 +16 (12.50%)
interface_account_token4 144 🔴 +16 (12.50%)
interface1 144 🔴 +16 (12.50%)
interface2 144 🔴 +16 (12.50%)
interface4 144 🔴 +16 (12.50%)
interface8 144 🔴 +16 (12.50%)
program1 144 🔴 +16 (12.50%)
program2 144 🔴 +16 (12.50%)
program4 144 🔴 +16 (12.50%)
program8 144 🔴 +16 (12.50%)
signer1 144 🔴 +16 (12.50%)
signer2 144 🔴 +16 (12.50%)
signer4 144 🔴 +16 (12.50%)
signer8 144 🔴 +16 (12.50%)
system_account1 144 🔴 +16 (12.50%)
system_account2 144 🔴 +16 (12.50%)
system_account4 144 🔴 +16 (12.50%)
system_account8 144 🔴 +16 (12.50%)
unchecked_account1 144 🔴 +16 (12.50%)
unchecked_account2 144 🔴 +16 (12.50%)
unchecked_account4 144 🔴 +16 (12.50%)
unchecked_account8 144 🔴 +16 (12.50%)

Notable changes

  • Upgrade Solana to 1.18.8 (#2867).

[0.29.0]

Solana version: 1.17.0

Instruction Stack Memory +/-
account_info1 128 🟢 -200 (60.98%)
account_info2 128 🟢 -248 (65.96%)
account_info4 128 🟢 -432 (77.14%)
account_info8 128 🟢 -600 (82.42%)
account_empty_init1 176 🟢 -416 (70.27%)
account_empty_init2 208 🟢 -352 (62.86%)
account_empty_init4 208 🟢 -424 (67.09%)
account_empty_init8 240 🟢 -584 (70.87%)
account_empty1 128 🟢 -192 (60.00%)
account_empty2 128 🟢 -240 (65.22%)
account_empty4 128 🟢 -424 (76.81%)
account_empty8 128 🟢 -600 (82.42%)
account_sized_init1 208 🟢 -392 (65.33%)
account_sized_init2 256 🟢 -296 (53.62%)
account_sized_init4 240 🟢 -424 (63.86%)
account_sized_init8 304 🟢 -584 (65.77%)
account_sized1 128 🟢 -200 (60.98%)
account_sized2 128 🟢 -264 (67.35%)
account_sized4 128 🟢 -440 (77.46%)
account_sized8 128 🟢 -664 (83.84%)
account_unsized_init1 224 🟢 -400 (64.10%)
account_unsized_init2 296 🟢 -288 (49.32%)
account_unsized_init4 304 🟢 -424 (58.24%)
account_unsized_init8 432 🟢 -584 (57.48%)
account_unsized1 128 🟢 -216 (62.79%)
account_unsized2 144 🟢 -312 (68.42%)
account_unsized4 128 🟢 -504 (79.75%)
account_unsized8 128 🟢 -792 (86.09%)
boxed_account_empty_init1 176 🟢 -376 (68.12%)
boxed_account_empty_init2 208 🟢 -192 (48.00%)
boxed_account_empty_init4 208 🟢 -224 (51.85%)
boxed_account_empty_init8 240 🟢 -256 (51.61%)
boxed_account_empty1 128 🟢 -192 (60.00%)
boxed_account_empty2 128 🟢 -192 (60.00%)
boxed_account_empty4 144 🟢 -176 (55.00%)
boxed_account_empty8 144 🟢 -192 (57.14%)
boxed_account_sized_init1 176 🟢 -376 (68.12%)
boxed_account_sized_init2 208 🟢 -192 (48.00%)
boxed_account_sized_init4 208 🟢 -224 (51.85%)
boxed_account_sized_init8 240 🟢 -256 (51.61%)
boxed_account_sized1 128 🟢 -192 (60.00%)
boxed_account_sized2 128 🟢 -192 (60.00%)
boxed_account_sized4 144 🟢 -176 (55.00%)
boxed_account_sized8 144 🟢 -192 (57.14%)
boxed_account_unsized_init1 176 🟢 -376 (68.12%)
boxed_account_unsized_init2 208 🟢 -192 (48.00%)
boxed_account_unsized_init4 208 🟢 -224 (51.85%)
boxed_account_unsized_init8 240 🟢 -256 (51.61%)
boxed_account_unsized1 128 🟢 -192 (60.00%)
boxed_account_unsized2 144 🟢 -176 (55.00%)
boxed_account_unsized4 128 🟢 -192 (60.00%)
boxed_account_unsized8 128 🟢 -208 (61.90%)
boxed_interface_account_mint1 128 🟢 -192 (60.00%)
boxed_interface_account_mint2 128 🟢 -192 (60.00%)
boxed_interface_account_mint4 144 🟢 -176 (55.00%)
boxed_interface_account_mint8 144 🟢 -192 (57.14%)
boxed_interface_account_token1 128 🟢 -192 (60.00%)
boxed_interface_account_token2 128 🟢 -192 (60.00%)
boxed_interface_account_token4 144 🟢 -176 (55.00%)
boxed_interface_account_token8 144 🟢 -192 (57.14%)
interface_account_mint1 128 🟢 -376 (74.60%)
interface_account_mint2 128 🟢 -552 (81.18%)
interface_account_mint4 128 🟢 -888 (87.40%)
interface_account_mint8 128 🟢 -1,560 (92.42%)
interface_account_token1 128 🟢 -552 (81.18%)
interface_account_token2 128 🟢 -728 (85.05%)
interface_account_token4 128 🟢 -1,240 (90.64%)
interface1 128 🟢 -192 (60.00%)
interface2 128 🟢 -240 (65.22%)
interface4 128 🟢 -424 (76.81%)
interface8 128 🟢 -600 (82.42%)
program1 128 🟢 -192 (60.00%)
program2 128 🟢 -240 (65.22%)
program4 128 🟢 -424 (76.81%)
program8 128 🟢 -600 (82.42%)
signer1 128 🟢 -200 (60.98%)
signer2 128 🟢 -248 (65.96%)
signer4 128 🟢 -432 (77.14%)
signer8 128 🟢 -600 (82.42%)
system_account1 128 🟢 -200 (60.98%)
system_account2 128 🟢 -248 (65.96%)
system_account4 128 🟢 -432 (77.14%)
system_account8 128 🟢 -600 (82.42%)
unchecked_account1 128 🟢 -200 (60.98%)
unchecked_account2 128 🟢 -248 (65.96%)
unchecked_account4 128 🟢 -432 (77.14%)
unchecked_account8 128 🟢 -600 (82.42%)

Notable changes

  • Box the anchor_lang::Result error variants (#2600).

[0.28.0]

Solana version: 1.16.0

Instruction Stack Memory +/-
account_info1 328 🔴 +80 (32.26%)
account_info2 376 🟢 -16 (4.08%)
account_info4 560 🔴 +48 (9.38%)
account_info8 728 🟢 -168 (18.75%)
account_empty_init1 592 🔴 +8 (1.37%)
account_empty_init2 560 🔴 +48 (9.38%)
account_empty_init4 632 🟢 -72 (10.23%)
account_empty_init8 824 🟢 -264 (24.26%)
account_empty1 320 🔴 +120 (60.00%)
account_empty2 368 🔴 +24 (6.98%)
account_empty4 552 🔴 +88 (18.97%)
account_empty8 728 🟢 -120 (14.15%)
account_sized_init1 600 🔴 +8 (1.35%)
account_sized_init2 552 🔴 +8 (1.47%)
account_sized_init4 664 🟢 -104 (13.54%)
account_sized_init8 888 🟢 -328 (26.97%)
account_sized1 328 🔴 +128 (64.00%)
account_sized2 392 🔴 +32 (8.89%)
account_sized4 568 🔴 +40 (7.58%)
account_sized8 792 🟢 -184 (18.85%)
account_unsized_init1 624 🔴 +16 (2.63%)
account_unsized_init2 584 🟢 -24 (3.95%)
account_unsized_init4 728 🟢 -168 (18.75%)
account_unsized_init8 1,016 🟢 -456 (30.98%)
account_unsized1 344 🔴 +168 (95.45%)
account_unsized2 456 🔴 +64 (16.33%)
account_unsized4 632 🟢 -24 (3.66%)
account_unsized8 920 🟢 -312 (25.32%)
boxed_account_empty_init1 552 🔴 +8 (1.47%)
boxed_account_empty_init2 400 🟢 -8 (1.96%)
boxed_account_empty_init4 432 🔴 +8 (1.89%)
boxed_account_empty_init8 496 🔴 +40 (8.77%)
boxed_account_empty1 320 🔴 +80 (33.33%)
boxed_account_empty2 320 🔴 +72 (29.03%)
boxed_account_empty4 320 🔴 +40 (14.29%)
boxed_account_empty8 336 🔴 +24 (7.69%)
boxed_account_sized_init1 552 🔴 +8 (1.47%)
boxed_account_sized_init2 400 🟢 -8 (1.96%)
boxed_account_sized_init4 432 🔴 +8 (1.89%)
boxed_account_sized_init8 496 🔴 +40 (8.77%)
boxed_account_sized1 320 🔴 +80 (33.33%)
boxed_account_sized2 320 🔴 +72 (29.03%)
boxed_account_sized4 320 🔴 +40 (14.29%)
boxed_account_sized8 336 🔴 +24 (7.69%)
boxed_account_unsized_init1 552 🔴 +8 (1.47%)
boxed_account_unsized_init2 400 🟢 -8 (1.96%)
boxed_account_unsized_init4 432 🔴 +8 (1.89%)
boxed_account_unsized_init8 496 🔴 +40 (8.77%)
boxed_account_unsized1 320 🔴 +72 (29.03%)
boxed_account_unsized2 320 🔴 +72 (29.03%)
boxed_account_unsized4 320 🔴 +40 (14.29%)
boxed_account_unsized8 336 🔴 +24 (7.69%)
boxed_interface_account_mint1 320 🔴 +80 (33.33%)
boxed_interface_account_mint2 320 🔴 +72 (29.03%)
boxed_interface_account_mint4 320 🔴 +40 (14.29%)
boxed_interface_account_mint8 336 🔴 +24 (7.69%)
boxed_interface_account_token1 320 🔴 +80 (33.33%)
boxed_interface_account_token2 320 🔴 +72 (29.03%)
boxed_interface_account_token4 320 🔴 +40 (14.29%)
boxed_interface_account_token8 336 🔴 +24 (7.69%)
interface_account_mint1 504 🔴 +296 (142.31%)
interface_account_mint2 680 🟢 -72 (9.57%)
interface_account_mint4 1,016 🟢 -408 (28.65%)
interface_account_mint8 1,688 🟢 -1,080 (39.02%)
interface_account_token1 680 🔴 +416 (157.58%)
interface_account_token2 856 🟢 -248 (22.46%)
interface_account_token4 1,368 🟢 -760 (35.71%)
interface1 320 🔴 +120 (60.00%)
interface2 368 🔴 +24 (6.98%)
interface4 552 🔴 +88 (18.97%)
interface8 728 🟢 -120 (14.15%)
program1 320 🔴 +120 (60.00%)
program2 368 🔴 +24 (6.98%)
program4 552 🔴 +88 (18.97%)
program8 728 🟢 -120 (14.15%)
signer1 328 🔴 +80 (32.26%)
signer2 376 🟢 -16 (4.08%)
signer4 560 🔴 +48 (9.38%)
signer8 728 🟢 -168 (18.75%)
system_account1 328 🔴 +80 (32.26%)
system_account2 376 🟢 -16 (4.08%)
system_account4 560 🔴 +48 (9.38%)
system_account8 728 🟢 -168 (18.75%)
unchecked_account1 328 🔴 +80 (32.26%)
unchecked_account2 376 🟢 -16 (4.08%)
unchecked_account4 560 🔴 +48 (9.38%)
unchecked_account8 728 🟢 -168 (18.75%)

Notable changes

  • Upgrading Solana to 1.16. The difference in stack memory usage between 0.27.0 and 0.28.0 is the direct result of upgrading Solana version(both build tools and crates) (#2512).
  • Change all accounts to have a reference to AccountInfo instead of cloning (#2656).

[0.27.0]

Solana version: 1.14.16

Instruction Stack Memory +/-
account_info1 248 N/A
account_info2 392 N/A
account_info4 512 N/A
account_info8 896 N/A
account_empty_init1 584 N/A
account_empty_init2 512 N/A
account_empty_init4 704 N/A
account_empty_init8 1,088 N/A
account_empty1 200 N/A
account_empty2 344 N/A
account_empty4 464 N/A
account_empty8 848 N/A
account_sized_init1 592 N/A
account_sized_init2 544 N/A
account_sized_init4 768 N/A
account_sized_init8 1,216 N/A
account_sized1 200 N/A
account_sized2 360 N/A
account_sized4 528 N/A
account_sized8 976 N/A
account_unsized_init1 608 N/A
account_unsized_init2 608 N/A
account_unsized_init4 896 N/A
account_unsized_init8 1,472 N/A
account_unsized1 176 N/A
account_unsized2 392 N/A
account_unsized4 656 N/A
account_unsized8 1,232 N/A
boxed_account_empty_init1 544 N/A
boxed_account_empty_init2 408 N/A
boxed_account_empty_init4 424 N/A
boxed_account_empty_init8 456 N/A
boxed_account_empty1 240 N/A
boxed_account_empty2 248 N/A
boxed_account_empty4 280 N/A
boxed_account_empty8 312 N/A
boxed_account_sized_init1 544 N/A
boxed_account_sized_init2 408 N/A
boxed_account_sized_init4 424 N/A
boxed_account_sized_init8 456 N/A
boxed_account_sized1 240 N/A
boxed_account_sized2 248 N/A
boxed_account_sized4 280 N/A
boxed_account_sized8 312 N/A
boxed_account_unsized_init1 544 N/A
boxed_account_unsized_init2 408 N/A
boxed_account_unsized_init4 424 N/A
boxed_account_unsized_init8 456 N/A
boxed_account_unsized1 248 N/A
boxed_account_unsized2 248 N/A
boxed_account_unsized4 280 N/A
boxed_account_unsized8 312 N/A
boxed_interface_account_mint1 240 N/A
boxed_interface_account_mint2 248 N/A
boxed_interface_account_mint4 280 N/A
boxed_interface_account_mint8 312 N/A
boxed_interface_account_token1 240 N/A
boxed_interface_account_token2 248 N/A
boxed_interface_account_token4 280 N/A
boxed_interface_account_token8 312 N/A
interface_account_mint1 208 N/A
interface_account_mint2 752 N/A
interface_account_mint4 1,424 N/A
interface_account_mint8 2,768 N/A
interface_account_token1 264 N/A
interface_account_token2 1,104 N/A
interface_account_token4 2,128 N/A
interface1 200 N/A
interface2 344 N/A
interface4 464 N/A
interface8 848 N/A
program1 200 N/A
program2 344 N/A
program4 464 N/A
program8 848 N/A
signer1 248 N/A
signer2 392 N/A
signer4 512 N/A
signer8 896 N/A
system_account1 248 N/A
system_account2 392 N/A
system_account4 512 N/A
system_account8 896 N/A
unchecked_account1 248 N/A
unchecked_account2 392 N/A
unchecked_account4 512 N/A
unchecked_account8 896 N/A