Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
This commit is contained in:
microwavedcola1 2022-05-03 18:17:58 +02:00
parent ec7c61327c
commit d38ca0de4c
3 changed files with 61 additions and 55 deletions

View File

@ -0,0 +1,56 @@
use std::str::FromStr;
use anchor_lang::prelude::*;
use fixed::types::I80F48;
use solana_program::{log::sol_log_compute_units, program_memory::sol_memcmp};
#[derive(Accounts)]
pub struct Benchmark {}
pub fn benchmark(_ctx: Context<Benchmark>) -> Result<()> {
// 101000
// 477
sol_log_compute_units(); // 100422
sol_log_compute_units(); // 100321 -> 101
msg!("msg!"); // 100079+101 -> 203
sol_log_compute_units(); // 100117
let pk1 = Pubkey::default(); // 10
sol_log_compute_units(); // 100006
let pk2 = Pubkey::default(); // 10
sol_log_compute_units(); // 99895
let _ = pk1 == pk2; // 56
sol_log_compute_units(); // 99739
let _ = sol_memcmp(&pk1.to_bytes(), &pk2.to_bytes(), 32); // 64
sol_log_compute_units(); // 99574
let large_number = I80F48::from_str("777472127991.999999999999996").unwrap();
let half = I80F48::MAX / 2;
let max = I80F48::MAX;
sol_log_compute_units(); // 92610
let _ = checked_math!(half + half); // 0
sol_log_compute_units(); // 92509
let _ = checked_math!(max - max); // 0
sol_log_compute_units(); // 92408
let _ = checked_math!(large_number * large_number); // 77
sol_log_compute_units(); // 92230
// /
let _ = checked_math!(I80F48::ZERO / max); // 839
sol_log_compute_units(); // 91290
let _ = checked_math!(half / max); // 3438
sol_log_compute_units(); // 87751
let _ = checked_math!(max / max); // 3457
sol_log_compute_units(); // 84193
Ok(())
}

View File

@ -1,4 +1,5 @@
pub use self::margin_trade::*;
pub use benchmark::*;
pub use close_account::*;
pub use create_account::*;
pub use create_group::*;
@ -19,6 +20,7 @@ pub use set_stub_oracle::*;
pub use update_index::*;
pub use withdraw::*;
mod benchmark;
mod close_account;
mod create_account;
mod create_group;

View File

@ -23,10 +23,6 @@ declare_id!("m43thNJ58XCjL798ZSq6JGAG1BnWskhdq5or6kcnfsD");
#[program]
pub mod mango_v4 {
use std::str::FromStr;
use solana_program::{log::sol_log_compute_units, program_memory::sol_memcmp};
use super::*;
pub fn create_group(ctx: Context<CreateGroup>) -> Result<()> {
@ -257,7 +253,7 @@ pub mod mango_v4 {
// perp_cancel_all
// perp_cancel_all_side
// perp_force_cancel_order
// liquidate_token_and_perp
// liquidate_perp_and_perp
@ -265,57 +261,12 @@ pub mod mango_v4 {
// resolve_banktruptcy
///
/// benchmark
///
///
pub fn benchmark(_ctx: Context<Benchmark>) -> Result<()> {
// 101000
// 477
sol_log_compute_units(); // 100422
sol_log_compute_units(); // 100321 -> 101
msg!("msg!"); // 100079+101 -> 203
sol_log_compute_units(); // 100117
let pk1 = Pubkey::default(); // 10
sol_log_compute_units(); // 100006
let pk2 = Pubkey::default(); // 10
sol_log_compute_units(); // 99895
let _ = pk1 == pk2; // 56
sol_log_compute_units(); // 99739
let _ = sol_memcmp(&pk1.to_bytes(), &pk2.to_bytes(), 32); // 64
sol_log_compute_units(); // 99574
let large_number = I80F48::from_str("777472127991.999999999999996").unwrap();
let half = I80F48::MAX / 2;
let max = I80F48::MAX;
sol_log_compute_units(); // 92610
let _ = checked_math!(half + half); // 0
sol_log_compute_units(); // 92509
let _ = checked_math!(max - max); // 0
sol_log_compute_units(); // 92408
let _ = checked_math!(large_number * large_number); // 77
sol_log_compute_units(); // 92230
// /
let _ = checked_math!(I80F48::ZERO / max); // 839
sol_log_compute_units(); // 91290
let _ = checked_math!(half / max); // 3438
sol_log_compute_units(); // 87751
let _ = checked_math!(max / max); // 3457
sol_log_compute_units(); // 84193
Ok(())
pub fn benchmark(ctx: Context<Benchmark>) -> Result<()> {
instructions::benchmark(ctx)
}
}
@ -327,6 +278,3 @@ impl anchor_lang::Id for Mango {
ID
}
}
#[derive(Accounts)]
pub struct Benchmark {}