Skip to content

Commit a8ad7d7

Browse files
committed
chore: reduce realloc
1 parent 112fb17 commit a8ad7d7

34 files changed

+101
-97
lines changed

crates/rbuilder/src/backtest/backtest_build_block.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ fn print_onchain_block_data(
319319
orders: &[Order],
320320
block_data: &BlockData,
321321
) {
322-
let mut executed_orders = Vec::new();
322+
let mut executed_orders = Vec::with_capacity(tx_sim_results.len());
323323

324324
let txs_to_idx: HashMap<_, _> = tx_sim_results
325325
.iter()

crates/rbuilder/src/backtest/fetch/flashbots_db.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
use crate::backtest::BuiltBlockData;
2-
use crate::primitives::OrderId;
31
use crate::{
42
backtest::{
53
fetch::data_source::{BlockRef, DataSource, DatasourceData},
6-
OrdersWithTimestamp,
4+
BuiltBlockData, OrdersWithTimestamp,
75
},
86
primitives::{
97
serialize::{RawBundle, RawOrder, RawShareBundle, TxEncoding},
10-
Order, SimValue,
8+
Order, OrderId, SimValue,
119
},
1210
};
1311
use alloy_primitives::I256;
@@ -19,8 +17,7 @@ use bigdecimal::{
1917
use eyre::WrapErr;
2018
use reth_primitives::{Bytes, B256, U256, U64};
2119
use sqlx::postgres::PgPool;
22-
use std::collections::HashSet;
23-
use std::{ops::Mul, str::FromStr};
20+
use std::{collections::HashSet, ops::Mul, str::FromStr};
2421
use time::{OffsetDateTime, PrimitiveDateTime};
2522
use tracing::trace;
2623
use uuid::Uuid;
@@ -333,7 +330,8 @@ impl RelayDB {
333330
.fetch_all(&self.pool)
334331
.await?;
335332

336-
let mut included_orders = Vec::new();
333+
let mut included_orders =
334+
Vec::with_capacity(included_bundles.len() + included_sbundles.len());
337335
for (bundle_uuid,) in included_bundles {
338336
let order_id = OrderId::Bundle(bundle_uuid);
339337
included_orders.push(order_id);

crates/rbuilder/src/backtest/fetch/mempool.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
//! Implementation of [`DataSource`] to bring mempool txs from flashbots' mempool dumpster.
22
//! It downloads all the needed parquet files and keeps them cached for future use.
3-
use crate::backtest::fetch::data_source::DatasourceData;
43
use crate::{
54
backtest::{
6-
fetch::data_source::{BlockRef, DataSource},
5+
fetch::data_source::{BlockRef, DataSource, DatasourceData},
76
OrdersWithTimestamp,
87
},
98
primitives::{

crates/rbuilder/src/backtest/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,13 @@ pub use backtest_build_block::run_backtest_build_block;
1212
pub use backtest_build_range::run_backtest_build_range;
1313
use std::collections::HashSet;
1414

15-
use crate::primitives::{OrderId, OrderReplacementKey};
16-
use crate::utils::offset_datetime_to_timestamp_ms;
1715
use crate::{
1816
mev_boost::BuilderBlockReceived,
1917
primitives::{
2018
serialize::{RawOrder, RawOrderConvertError, TxEncoding},
21-
AccountNonce, Order, SimValue,
19+
AccountNonce, Order, OrderId, OrderReplacementKey, SimValue,
2220
},
21+
utils::offset_datetime_to_timestamp_ms,
2322
};
2423
use alloy_primitives::{Address, TxHash, I256};
2524
use alloy_rpc_types::{BlockTransactions, Transaction};

crates/rbuilder/src/backtest/redistribute/cli/csv_output.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
use alloy_primitives::{Address, B256, U256};
2-
use std::fs::File;
3-
use std::io;
4-
use std::io::Write;
5-
use std::path::Path;
2+
use std::{fs::File, io, io::Write, path::Path};
63

74
#[derive(Debug)]
85
pub struct CSVOutputRow {

crates/rbuilder/src/backtest/redistribute/mod.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ where
293293
})
294294
.collect::<Vec<_>>();
295295

296-
let mut simplified_orders = Vec::new();
296+
let mut simplified_orders = Vec::with_capacity(included_orders_available.len());
297297

298298
for available_order in included_orders_available {
299299
simplified_orders.push(SimplifiedOrder::new_from_order(&available_order.order));
@@ -880,7 +880,11 @@ fn calc_inclusion_change(
880880
exclusion_result: &ExclusionResult,
881881
included_before: &[(OrderId, U256)],
882882
) -> Vec<OrderInclusionChange> {
883-
let mut result = Vec::new();
883+
let mut result = Vec::with_capacity(
884+
exclusion_result.new_orders_included.len()
885+
+ exclusion_result.new_orders_failed.len()
886+
+ exclusion_result.orders_profit_changed.len(),
887+
);
884888
for (id, profit_after) in &exclusion_result.new_orders_included {
885889
result.push((
886890
*id,

crates/rbuilder/src/backtest/redistribute/redistribution_algo.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,11 @@ pub fn calculate_redistribution(data: RedistributionCalculator) -> Redistributio
141141
}
142142

143143
let mut total_value_redistributed = U256::ZERO;
144-
let mut redistribution_entity_result = Vec::new();
144+
let mut redistribution_entity_result = Vec::with_capacity(n);
145145
for i in 0..n {
146-
let mut order_id_vector = Vec::new();
147-
let mut order_contrib_vector = Vec::new();
146+
let mut order_id_vector = Vec::with_capacity(data.identity_data[i].included_orders.len());
147+
let mut order_contrib_vector =
148+
Vec::with_capacity(data.identity_data[i].included_orders.len());
148149
for landed_order in &data.identity_data[i].included_orders {
149150
order_id_vector.push(landed_order.id);
150151
order_contrib_vector.push(landed_order.realized_value);
@@ -230,7 +231,7 @@ fn split_value(value: U256, split_vector: &[U256]) -> Vec<U256> {
230231
if total_split.is_zero() {
231232
return split_vector.iter().map(|_| U256::ZERO).collect();
232233
}
233-
let mut result = Vec::new();
234+
let mut result = Vec::with_capacity(split_vector.len());
234235
for split in split_vector {
235236
result.push((value * split) / total_split);
236237
}

crates/rbuilder/src/backtest/restore_landed_orders/find_landed_orders.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
use crate::primitives::{Order, OrderId, ShareBundleBody, ShareBundleInner, TxRevertBehavior};
2-
use crate::utils::get_percent;
1+
use crate::{
2+
primitives::{Order, OrderId, ShareBundleBody, ShareBundleInner, TxRevertBehavior},
3+
utils::get_percent,
4+
};
35
use ahash::HashMap;
46
use alloy_primitives::{B256, I256, U256};
57

@@ -408,8 +410,10 @@ fn find_landed_order_data(
408410
#[cfg(test)]
409411
mod tests {
410412
use super::*;
411-
use crate::primitives::{Bundle, MempoolTx, Refund, ShareBundle, ShareBundleTx};
412-
use crate::utils::test_utils::*;
413+
use crate::{
414+
primitives::{Bundle, MempoolTx, Refund, ShareBundle, ShareBundleTx},
415+
utils::test_utils::*,
416+
};
413417

414418
fn assert_result(
415419
executed_txs: Vec<ExecutedBlockTx>,

crates/rbuilder/src/backtest/store.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
// store orders in the sqlite database
22

3-
use crate::backtest::BuiltBlockData;
4-
use crate::primitives::OrderId;
5-
use crate::utils::timestamp_ms_to_offset_datetime;
63
use crate::{
7-
backtest::{BlockData, OrdersWithTimestamp, RawOrdersWithTimestamp},
4+
backtest::{BlockData, BuiltBlockData, OrdersWithTimestamp, RawOrdersWithTimestamp},
85
mev_boost::BuilderBlockReceived,
9-
primitives::serialize::{RawOrder, TxEncoding},
6+
primitives::{
7+
serialize::{RawOrder, TxEncoding},
8+
OrderId,
9+
},
10+
utils::timestamp_ms_to_offset_datetime,
1011
};
1112
use ahash::{HashMap, HashSet};
12-
use alloy_primitives::utils::{ParseUnits, Unit};
1313
use alloy_primitives::{
14-
utils::{format_ether, parse_ether},
14+
utils::{format_ether, parse_ether, ParseUnits, Unit},
1515
Address, B256, I256, U256,
1616
};
1717
use lz4_flex::{block::DecompressError, compress_prepend_size, decompress_size_prepended};
@@ -20,10 +20,10 @@ use sqlx::{
2020
sqlite::{SqliteConnectOptions, SqliteRow},
2121
ConnectOptions, Connection, Executor, Row, SqliteConnection,
2222
};
23-
use std::str::FromStr;
2423
use std::{
2524
ffi::OsString,
2625
path::{Path, PathBuf},
26+
str::FromStr,
2727
};
2828

2929
/// Version of the data/format on the DB.

crates/rbuilder/src/bin/backtest-distribute.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use rbuilder::backtest::redistribute::run_backtest_redistribute;
2-
use rbuilder::live_builder::config::Config;
1+
use rbuilder::{backtest::redistribute::run_backtest_redistribute, live_builder::config::Config};
32

43
#[tokio::main]
54
async fn main() -> eyre::Result<()> {

0 commit comments

Comments
 (0)