Compare commits
2 Commits
f828cb7bce
...
f991655434
Author | SHA1 | Date |
---|---|---|
Aniket Prajapati | f991655434 | |
aniketfuryrocks | e1dbb82779 |
|
@ -8,6 +8,7 @@ import {
|
||||||
Commitment,
|
Commitment,
|
||||||
Connection,
|
Connection,
|
||||||
LAMPORTS_PER_SOL,
|
LAMPORTS_PER_SOL,
|
||||||
|
PublicKey,
|
||||||
} from "@solana/web3.js";
|
} from "@solana/web3.js";
|
||||||
import { getKeypairFromFile } from "./common_utils";
|
import { getKeypairFromFile } from "./common_utils";
|
||||||
import { deploy_programs } from "./deploy_programs";
|
import { deploy_programs } from "./deploy_programs";
|
||||||
|
@ -277,6 +278,7 @@ async function configure(
|
||||||
market.quote_mint,
|
market.quote_mint,
|
||||||
])
|
])
|
||||||
.flat();
|
.flat();
|
||||||
|
|
||||||
const userAccountsList = userData
|
const userAccountsList = userData
|
||||||
.map((user) => {
|
.map((user) => {
|
||||||
const allOpenOrdersAccounts = user.open_orders
|
const allOpenOrdersAccounts = user.open_orders
|
||||||
|
@ -286,13 +288,24 @@ async function configure(
|
||||||
return allOpenOrdersAccounts.concat(allTokenAccounts);
|
return allOpenOrdersAccounts.concat(allTokenAccounts);
|
||||||
})
|
})
|
||||||
.flat();
|
.flat();
|
||||||
|
|
||||||
accounts = accounts.concat(marketAccountsList).concat(userAccountsList);
|
accounts = accounts.concat(marketAccountsList).concat(userAccountsList);
|
||||||
|
|
||||||
console.log("Accounts created");
|
console.log("Accounts created");
|
||||||
|
|
||||||
|
const known_accounts = await Promise.all(accounts.map(async (account) => {
|
||||||
|
// get accountInfo as jsonParsed to get Size
|
||||||
|
let accountInfo = await connection.getParsedAccountInfo(account);
|
||||||
|
return [account,
|
||||||
|
// @ts-ignore
|
||||||
|
accountInfo.value.space
|
||||||
|
] as [PublicKey, number];
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
let outputFile: OutputFile = {
|
let outputFile: OutputFile = {
|
||||||
programs: programOutputData,
|
programs: programOutputData,
|
||||||
known_accounts: accounts,
|
known_accounts,
|
||||||
users: userData,
|
users: userData,
|
||||||
mints,
|
mints,
|
||||||
markets,
|
markets,
|
||||||
|
|
|
@ -17,7 +17,7 @@ export interface ProgramOutputData {
|
||||||
export interface OutputFile {
|
export interface OutputFile {
|
||||||
users: User[];
|
users: User[];
|
||||||
programs: ProgramOutputData[];
|
programs: ProgramOutputData[];
|
||||||
known_accounts: PublicKey[];
|
known_accounts: [PublicKey, number][];
|
||||||
mints: PublicKey[];
|
mints: PublicKey[];
|
||||||
markets: Market[];
|
markets: Market[];
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ pub struct Market {
|
||||||
#[derive(Serialize, Deserialize, Clone)]
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
pub programs: Vec<ProgramData>,
|
pub programs: Vec<ProgramData>,
|
||||||
pub known_accounts: Vec<String>,
|
pub known_accounts: Vec<(String, u32)>,
|
||||||
pub users: Vec<User>,
|
pub users: Vec<User>,
|
||||||
pub mints: Vec<String>,
|
pub mints: Vec<String>,
|
||||||
pub markets: Vec<Market>,
|
pub markets: Vec<Market>,
|
||||||
|
|
|
@ -19,8 +19,8 @@ const NB_OF_ACCOUNTS_FETCHED_PER_TASK: usize = 100;
|
||||||
pub struct AccountsFetchingTests;
|
pub struct AccountsFetchingTests;
|
||||||
|
|
||||||
impl AccountsFetchingTests {
|
impl AccountsFetchingTests {
|
||||||
pub fn create_random_address(count: usize) -> Vec<Pubkey> {
|
pub fn create_random_address(count: usize) -> Vec<(Pubkey, u32)> {
|
||||||
(0..count).map(|_| Keypair::new().pubkey()).collect()
|
(0..count).map(|_| (Keypair::new().pubkey(), 0)).collect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,19 +30,19 @@ impl TestingTask for AccountsFetchingTests {
|
||||||
let accounts = config
|
let accounts = config
|
||||||
.known_accounts
|
.known_accounts
|
||||||
.iter()
|
.iter()
|
||||||
.map(|x| Pubkey::from_str(x.as_str()).unwrap())
|
.map(|x| (Pubkey::from_str(&x.0).unwrap(), x.1))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
let unknown_accounts: Vec<Pubkey> =
|
|
||||||
AccountsFetchingTests::create_random_address(accounts.len());
|
let unknown_accounts = AccountsFetchingTests::create_random_address(accounts.len());
|
||||||
|
|
||||||
let instant = GetAccountsBench {
|
let instant = GetAccountsBench {
|
||||||
accounts_list: Arc::new([accounts, unknown_accounts].concat()),
|
accounts_list: Arc::new([accounts, unknown_accounts].concat()),
|
||||||
};
|
};
|
||||||
|
|
||||||
let metric = Bencher::bench::<GetAccountsBench>(instant, args).await?;
|
let metric = Bencher::bench::<GetAccountsBench>(instant, args).await?;
|
||||||
Ok(metric)
|
Ok(metric)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn get_name(&self) -> String {
|
fn get_name(&self) -> String {
|
||||||
"Accounts Fetching".to_string()
|
"Accounts Fetching".to_string()
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ impl TestingTask for AccountsFetchingTests {
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct GetAccountsBench {
|
pub struct GetAccountsBench {
|
||||||
accounts_list: Arc<Vec<Pubkey>>,
|
accounts_list: Arc<Vec<(Pubkey, u32)>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait::async_trait]
|
#[async_trait::async_trait]
|
||||||
|
@ -70,10 +70,25 @@ impl Benchmark for GetAccountsBench {
|
||||||
let accounts = self
|
let accounts = self
|
||||||
.accounts_list
|
.accounts_list
|
||||||
.iter()
|
.iter()
|
||||||
.copied()
|
|
||||||
.choose_multiple(&mut rng, number_of_fetched_accounts);
|
.choose_multiple(&mut rng, number_of_fetched_accounts);
|
||||||
|
|
||||||
rpc_client.raw_get_multiple_accounts(accounts).await
|
// filter accounts whose account.1 value summing up to 10485760
|
||||||
|
let mut sum = 0;
|
||||||
|
let mut filtered_accounts = Vec::new();
|
||||||
|
|
||||||
|
for account in accounts.iter() {
|
||||||
|
let local_sum = sum + account.1;
|
||||||
|
|
||||||
|
// try maximise the number of accounts fetched
|
||||||
|
if local_sum <= 10485760 {
|
||||||
|
sum = local_sum;
|
||||||
|
filtered_accounts.push(account.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rpc_client
|
||||||
|
.raw_get_multiple_accounts(filtered_accounts)
|
||||||
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
Loading…
Reference in New Issue