Benchmark results for Solana runtime operations:
Note: The #[profile]
macro adds ~5-6 CU overhead to each measurement.
â—Ź Baseline
â—Ź Access
â—Ź Account
â—Ź Add
â—Ź Array
â—Ź Arrayvec
â—Ź Checked
â—Ź Conversions
â—Ź Cpi
â—Ź Option
â—Ź Partial
â—Ź Pinocchio
â—Ź Saturating
â—Ź Solana
â—Ź Std
â—Ź Sub
â—Ź Vec
Function | CU Consumed |
---|---|
baseline_empty_function | 6 |
Function | CU Consumed |
---|---|
add_assign_u8 | 7 |
add_assign_u16 | 7 |
add_assign_u32 | 7 |
add_assign_u64 | 7 |
add_assign_u128 | 9 |
Function | CU Consumed |
---|---|
array_new | 10 |
array_with_capacity_10 | 8 |
array_with_capacity_100 | 27 |
array_assign_u8 | 9 |
array_assign_u64 | 16 |
array_assign_pubkey | 108 |
array_assign_10_u8 | 9 |
array_assign_10_u64 | 16 |
array_assign_10_pubkey | 108 |
Function | CU Consumed |
---|---|
arrayvec_u8_new | 7 |
arrayvec_push_pubkey | 50 |
arrayvec_push_u64 | 43 |
arrayvec_push_u8 | 25 |
arrayvec_u8_with_capacity_10 | 7 |
arrayvec_u8_with_capacity_100 | 7 |
arrayvec_push_10_u8 | 10 |
arrayvec_push_10_u64 | 17 |
arrayvec_push_10_pubkey | 88 |
Function | CU Consumed |
---|---|
checked_add_u8 | 7 |
checked_add_u16 | 7 |
checked_add_u32 | 8 |
checked_add_u64 | 8 |
checked_add_u128 | 10 |
checked_sub_u8 | 7 |
checked_sub_u16 | 7 |
checked_sub_u32 | 8 |
checked_sub_u64 | 8 |
checked_sub_u128 | 10 |
checked_mul_u8 | 7 |
checked_mul_u16 | 7 |
checked_mul_u32 | 8 |
checked_mul_u64 | 8 |
checked_mul_u128 | 10 |
checked_div_u8 | 7 |
checked_div_u16 | 7 |
checked_div_u32 | 8 |
checked_div_u64 | 8 |
checked_div_u128 | 10 |
Function | CU Consumed |
---|---|
pinocchio_msg10_chars | 110 |
pinocchio_sysvar_rent_exemption_165 | 151 |
pinocchio_clock_get_slot | 171 |
Function | CU Consumed |
---|---|
solana_msg10_chars | 110 |
solana_msg_program_id | 6954 |
solana_pubkey_new_from_array | 15 |
solana_pubkey_to_bytes | 15 |
Function | CU Consumed |
---|---|
std_add_u8 | 6 |
std_add_u16 | 6 |
std_add_u32 | 6 |
std_add_u64 | 6 |
std_add_u128 | 6 |
std_sub_u8 | 6 |
std_sub_u16 | 6 |
std_sub_u32 | 6 |
std_sub_u64 | 6 |
std_sub_u128 | 6 |
std_mul_u8 | 6 |
std_mul_u16 | 6 |
std_mul_u32 | 6 |
std_mul_u64 | 6 |
std_mul_u128 | 6 |
std_div_u8 | 6 |
std_div_u16 | 6 |
std_div_u32 | 6 |
std_div_u64 | 6 |
std_div_u128 | 6 |
Function | CU Consumed |
---|---|
sub_assign_u8 | 7 |
sub_assign_u16 | 7 |
sub_assign_u32 | 7 |
sub_assign_u64 | 7 |
sub_assign_u128 | 9 |
Function | CU Consumed |
---|---|
vec_u8_new | 9 |
vec_u8_with_capacity_10 | 113 |
vec_u8_with_capacity_100 | 113 |
vec_push_u8 | 73 |
vec_push_u64 | 78 |
vec_push_pubkey | 85 |
vec_push_10_u8 | 202 |
vec_push_10_u64 | 313 |
vec_push_10_pubkey | 380 |
vec_push_u8_with_capacity | 120 |
vec_push_u64_with_capacity | 120 |
vec_push_pubkey_with_capacity | 128 |
vec_push_10_u8_with_capacity | 153 |
vec_push_10_u64_with_capacity | 149 |
vec_push_10_pubkey_with_capacity | 218 |