STACK_MEMORY.md 48 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: 2.1.0

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

Notable changes


[0.31.1]

Solana version: 2.1.0

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

Notable changes


[0.31.0]

Solana version: 2.1.0

Instruction Stack Memory -
account_info1 46 ๐ŸŸข -98 (68.06%)
account_info2 80 ๐ŸŸข -64 (44.44%)
account_info4 80 ๐ŸŸข -64 (44.44%)
account_info8 80 ๐ŸŸข -64 (44.44%)
account_empty_init1 88 ๐ŸŸข -56 (38.89%)
account_empty_init2 88 ๐ŸŸข -56 (38.89%)
account_empty_init4 88 ๐ŸŸข -104 (54.17%)
account_empty_init8 88 ๐ŸŸข -136 (60.71%)
account_empty1 88 ๐ŸŸข -56 (38.89%)
account_empty2 88 ๐ŸŸข -56 (38.89%)
account_empty4 88 ๐ŸŸข -56 (38.89%)
account_empty8 88 ๐ŸŸข -56 (38.89%)
account_sized_init1 88 ๐ŸŸข -88 (50.00%)
account_sized_init2 88 ๐ŸŸข -104 (54.17%)
account_sized_init4 88 ๐ŸŸข -136 (60.71%)
account_sized_init8 88 ๐ŸŸข -200 (69.44%)
account_sized1 88 ๐ŸŸข -56 (38.89%)
account_sized2 88 ๐ŸŸข -56 (38.89%)
account_sized4 88 ๐ŸŸข -56 (38.89%)
account_sized8 88 ๐ŸŸข -56 (38.89%)
account_unsized_init1 88 ๐ŸŸข -104 (54.17%)
account_unsized_init2 88 ๐ŸŸข -136 (60.71%)
account_unsized_init4 88 ๐ŸŸข -200 (69.44%)
account_unsized_init8 88 ๐ŸŸข -328 (78.85%)
account_unsized1 88 ๐ŸŸข -56 (38.89%)
account_unsized2 88 ๐ŸŸข -56 (38.89%)
account_unsized4 88 ๐ŸŸข -56 (38.89%)
account_unsized8 88 ๐ŸŸข -56 (38.89%)
boxed_account_empty_init1 88 ๐ŸŸข -56 (38.89%)
boxed_account_empty_init2 88 ๐ŸŸข -56 (38.89%)
boxed_account_empty_init4 88 ๐ŸŸข -104 (54.17%)
boxed_account_empty_init8 88 ๐ŸŸข -136 (60.71%)
boxed_account_empty1 88 ๐ŸŸข -56 (38.89%)
boxed_account_empty2 88 ๐ŸŸข -56 (38.89%)
boxed_account_empty4 88 ๐ŸŸข -56 (38.89%)
boxed_account_empty8 88 ๐ŸŸข -56 (38.89%)
boxed_account_sized_init1 88 ๐ŸŸข -56 (38.89%)
boxed_account_sized_init2 88 ๐ŸŸข -56 (38.89%)
boxed_account_sized_init4 88 ๐ŸŸข -104 (54.17%)
boxed_account_sized_init8 88 ๐ŸŸข -136 (60.71%)
boxed_account_sized1 88 ๐ŸŸข -56 (38.89%)
boxed_account_sized2 88 ๐ŸŸข -56 (38.89%)
boxed_account_sized4 88 ๐ŸŸข -56 (38.89%)
boxed_account_sized8 88 ๐ŸŸข -56 (38.89%)
boxed_account_unsized_init1 88 ๐ŸŸข -56 (38.89%)
boxed_account_unsized_init2 88 ๐ŸŸข -56 (38.89%)
boxed_account_unsized_init4 88 ๐ŸŸข -104 (54.17%)
boxed_account_unsized_init8 88 ๐ŸŸข -136 (60.71%)
boxed_account_unsized1 88 ๐ŸŸข -56 (38.89%)
boxed_account_unsized2 88 ๐ŸŸข -56 (38.89%)
boxed_account_unsized4 88 ๐ŸŸข -56 (38.89%)
boxed_account_unsized8 88 ๐ŸŸข -56 (38.89%)
boxed_interface_account_mint1 88 ๐ŸŸข -56 (38.89%)
boxed_interface_account_mint2 88 ๐ŸŸข -56 (38.89%)
boxed_interface_account_mint4 88 ๐ŸŸข -56 (38.89%)
boxed_interface_account_mint8 88 ๐ŸŸข -56 (38.89%)
boxed_interface_account_token1 88 ๐ŸŸข -56 (38.89%)
boxed_interface_account_token2 88 ๐ŸŸข -56 (38.89%)
boxed_interface_account_token4 88 ๐ŸŸข -56 (38.89%)
boxed_interface_account_token8 88 ๐ŸŸข -56 (38.89%)
interface_account_mint1 88 ๐ŸŸข -56 (38.89%)
interface_account_mint2 88 ๐ŸŸข -56 (38.89%)
interface_account_mint4 88 ๐ŸŸข -56 (38.89%)
interface_account_mint8 88 ๐ŸŸข -56 (38.89%)
interface_account_token1 80 ๐ŸŸข -64 (44.44%)
interface_account_token2 80 ๐ŸŸข -64 (44.44%)
interface_account_token4 80 ๐ŸŸข -64 (44.44%)
interface1 88 ๐ŸŸข -56 (38.89%)
interface2 88 ๐ŸŸข -56 (38.89%)
interface4 88 ๐ŸŸข -56 (38.89%)
interface8 88 ๐ŸŸข -56 (38.89%)
program1 88 ๐ŸŸข -56 (38.89%)
program2 88 ๐ŸŸข -56 (38.89%)
program4 88 ๐ŸŸข -56 (38.89%)
program8 88 ๐ŸŸข -56 (38.89%)
signer1 88 ๐ŸŸข -56 (38.89%)
signer2 88 ๐ŸŸข -56 (38.89%)
signer4 88 ๐ŸŸข -56 (38.89%)
signer8 88 ๐ŸŸข -56 (38.89%)
system_account1 88 ๐ŸŸข -56 (38.89%)
system_account2 88 ๐ŸŸข -56 (38.89%)
system_account4 88 ๐ŸŸข -56 (38.89%)
system_account8 88 ๐ŸŸข -56 (38.89%)
unchecked_account1 88 ๐ŸŸข -56 (38.89%)
unchecked_account2 88 ๐ŸŸข -56 (38.89%)
unchecked_account4 88 ๐ŸŸข -56 (38.89%)
unchecked_account8 88 ๐ŸŸข -56 (38.89%)

Notable changes

  • lang: Use closures for init constraints to reduce the stack usage of try_accounts (#2939).

[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