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