STACK_MEMORY.md 19 KB

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.17.0

Instruction Stack Memory +/-
account_info1 272 🟢 -56 (17.07%)
account_info2 320 🟢 -56 (14.89%)
account_info4 416 🟢 -144 (25.71%)
account_info8 608 🟢 -120 (16.48%)
account_empty_init1 400 🟢 -192 (32.43%)
account_empty_init2 480 🟢 -80 (14.29%)
account_empty_init4 528 🟢 -104 (16.46%)
account_empty_init8 720 🟢 -104 (12.62%)
account_empty1 272 🟢 -48 (15.00%)
account_empty2 320 🟢 -48 (13.04%)
account_empty4 416 🟢 -136 (24.64%)
account_empty8 608 🟢 -120 (16.48%)
account_sized_init1 408 🟢 -192 (32.00%)
account_sized_init2 496 🟢 -56 (10.14%)
account_sized_init4 560 🟢 -104 (15.66%)
account_sized_init8 784 🟢 -104 (11.71%)
account_sized1 280 🟢 -48 (14.63%)
account_sized2 336 🟢 -56 (14.29%)
account_sized4 448 🟢 -120 (21.13%)
account_sized8 672 🟢 -120 (15.15%)
account_unsized_init1 424 🟢 -200 (32.05%)
account_unsized_init2 528 🟢 -56 (9.59%)
account_unsized_init4 624 🟢 -104 (14.29%)
account_unsized_init8 912 🟢 -104 (10.24%)
account_unsized1 296 🟢 -48 (13.95%)
account_unsized2 368 🟢 -88 (19.30%)
account_unsized4 512 🟢 -120 (18.99%)
account_unsized8 800 🟢 -120 (13.04%)
boxed_account_empty_init1 360 🟢 -192 (34.78%)
boxed_account_empty_init2 400 -
boxed_account_empty_init4 368 🟢 -64 (14.81%)
boxed_account_empty_init8 400 🟢 -96 (19.35%)
boxed_account_empty1 232 🟢 -88 (27.50%)
boxed_account_empty2 240 🟢 -80 (25.00%)
boxed_account_empty4 256 🟢 -64 (20.00%)
boxed_account_empty8 288 🟢 -48 (14.29%)
boxed_account_sized_init1 360 🟢 -192 (34.78%)
boxed_account_sized_init2 400 -
boxed_account_sized_init4 368 🟢 -64 (14.81%)
boxed_account_sized_init8 400 🟢 -96 (19.35%)
boxed_account_sized1 232 🟢 -88 (27.50%)
boxed_account_sized2 240 🟢 -80 (25.00%)
boxed_account_sized4 256 🟢 -64 (20.00%)
boxed_account_sized8 288 🟢 -48 (14.29%)
boxed_account_unsized_init1 360 🟢 -192 (34.78%)
boxed_account_unsized_init2 400 -
boxed_account_unsized_init4 368 🟢 -64 (14.81%)
boxed_account_unsized_init8 400 🟢 -96 (19.35%)
boxed_account_unsized1 232 🟢 -88 (27.50%)
boxed_account_unsized2 240 🟢 -80 (25.00%)
boxed_account_unsized4 256 🟢 -64 (20.00%)
boxed_account_unsized8 288 🟢 -48 (14.29%)
boxed_interface_account_mint1 232 🟢 -88 (27.50%)
boxed_interface_account_mint2 240 🟢 -80 (25.00%)
boxed_interface_account_mint4 256 🟢 -64 (20.00%)
boxed_interface_account_mint8 288 🟢 -48 (14.29%)
boxed_interface_account_token1 232 🟢 -88 (27.50%)
boxed_interface_account_token2 240 🟢 -80 (25.00%)
boxed_interface_account_token4 256 🟢 -64 (20.00%)
boxed_interface_account_token8 288 🟢 -48 (14.29%)
interface_account_mint1 392 🟢 -112 (22.22%)
interface_account_mint2 560 🟢 -120 (17.65%)
interface_account_mint4 896 🟢 -120 (11.81%)
interface_account_mint8 1,568 🟢 -120 (7.11%)
interface_account_token1 480 🟢 -200 (29.41%)
interface_account_token2 736 🟢 -120 (14.02%)
interface_account_token4 1,248 🟢 -120 (8.77%)
interface1 272 🟢 -48 (15.00%)
interface2 320 🟢 -48 (13.04%)
interface4 416 🟢 -136 (24.64%)
interface8 608 🟢 -120 (16.48%)
program1 272 🟢 -48 (15.00%)
program2 320 🟢 -48 (13.04%)
program4 416 🟢 -136 (24.64%)
program8 608 🟢 -120 (16.48%)
signer1 272 🟢 -56 (17.07%)
signer2 320 🟢 -56 (14.89%)
signer4 416 🟢 -144 (25.71%)
signer8 608 🟢 -120 (16.48%)
system_account1 272 🟢 -56 (17.07%)
system_account2 320 🟢 -56 (14.89%)
system_account4 416 🟢 -144 (25.71%)
system_account8 608 🟢 -120 (16.48%)
unchecked_account1 272 🟢 -56 (17.07%)
unchecked_account2 320 🟢 -56 (14.89%)
unchecked_account4 416 🟢 -144 (25.71%)
unchecked_account8 608 🟢 -120 (16.48%)

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).

[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