Skip to content

Commit

Permalink
refactor: using macros to simplify some code (#47)
Browse files Browse the repository at this point in the history
  • Loading branch information
anonymousGiga authored Mar 4, 2024
1 parent 1bf5392 commit 8f529bd
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 108 deletions.
25 changes: 25 additions & 0 deletions crates/perf-metrics/src/metrics/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,28 @@ macro_rules! define_start_functions {
}
};
}

// #[cfg(feature = "enable_execution_duration_record")]
#[allow(unused_macros)]
macro_rules! impl_write_macro {
($struct_name:ident, $start_record_fn:ident, $record_upsert_time_fn:ident, $record_size_fn:ident, $append_time_fn:ident, $write_size_fn:ident) => {
#[cfg(feature = "enable_execution_duration_record")]
pub struct $struct_name(usize);

#[cfg(feature = "enable_execution_duration_record")]
impl $struct_name {
pub fn new(size: usize) -> Self {
$start_record_fn();
Self(size)
}
}

#[cfg(feature = "enable_execution_duration_record")]
impl Drop for $struct_name {
fn drop(&mut self) {
$record_upsert_time_fn();
$record_size_fn(self.0);
}
}
};
}
162 changes: 54 additions & 108 deletions crates/perf-metrics/src/metrics/metric.rs
Original file line number Diff line number Diff line change
Expand Up @@ -328,25 +328,16 @@ fn record_revert_storage_append_time() {
recorder().duration_record.write_to_db.record_revert_storage_append_time();
}

/// Encapsulate this structure to record write_storage in revert state in a RAII manner.
// Encapsulate this structure to record write_storage in revert state in a RAII manner.
#[cfg(feature = "enable_execution_duration_record")]
pub struct RevertsStorageWrite(usize);

#[cfg(feature = "enable_execution_duration_record")]
impl RevertsStorageWrite {
pub fn new(size: usize) -> Self {
start_write_to_db_write_record();
Self(size)
}
}

#[cfg(feature = "enable_execution_duration_record")]
impl Drop for RevertsStorageWrite {
fn drop(&mut self) {
record_revert_storage_append_time();
record_revert_storage_size(self.0);
}
}
impl_write_macro!(
RevertsStorageWrite,
start_write_to_db_write_record,
record_revert_storage_append_time,
record_revert_storage_size,
record_receipts_append_time,
record_write_receipts_size
);

/// Record time of write storage changes in StateReverts's write_to_db.
#[cfg(feature = "enable_execution_duration_record")]
Expand All @@ -366,25 +357,16 @@ fn record_revert_account_append_time() {
recorder().duration_record.write_to_db.record_revert_account_append_time();
}

/// Encapsulate this structure to record write_account in revert state in a RAII manner.
// Encapsulate this structure to record write_account in revert state in a RAII manner.
#[cfg(feature = "enable_execution_duration_record")]
pub struct RevertsAccountWrite(usize);

#[cfg(feature = "enable_execution_duration_record")]
impl RevertsAccountWrite {
pub fn new(size: usize) -> Self {
start_write_to_db_write_record();
Self(size)
}
}

#[cfg(feature = "enable_execution_duration_record")]
impl Drop for RevertsAccountWrite {
fn drop(&mut self) {
record_revert_account_append_time();
record_revert_account_size(self.0);
}
}
impl_write_macro!(
RevertsAccountWrite,
start_write_to_db_write_record,
record_revert_account_append_time,
record_revert_account_size,
record_receipts_append_time,
record_write_receipts_size
);

/// Record time of write account changes in StateReverts's write_to_db.
#[cfg(feature = "enable_execution_duration_record")]
Expand All @@ -404,25 +386,16 @@ fn record_receipts_append_time() {
recorder().duration_record.write_to_db.record_receipts_append_time();
}

/// Encapsulate this structure to record write receipts in a RAII manner.
// Encapsulate this structure to record write receipts in a RAII manner.
#[cfg(feature = "enable_execution_duration_record")]
pub struct ReceiptsWrite(usize);

#[cfg(feature = "enable_execution_duration_record")]
impl ReceiptsWrite {
pub fn new(size: usize) -> Self {
start_write_to_db_write_record();
Self(size)
}
}

#[cfg(feature = "enable_execution_duration_record")]
impl Drop for ReceiptsWrite {
fn drop(&mut self) {
record_receipts_append_time();
record_write_receipts_size(self.0);
}
}
impl_write_macro!(
ReceiptsWrite,
start_write_to_db_write_record,
record_receipts_append_time,
record_write_receipts_size,
record_receipts_append_time,
record_write_receipts_size
);

/// Record time of write receipts in BundleStateWithReceipts's write_to_db.
#[cfg(feature = "enable_execution_duration_record")]
Expand All @@ -448,25 +421,16 @@ fn record_state_account_upsert_time() {
recorder().duration_record.write_to_db.record_state_account_upsert_time();
}

/// Encapsulate this structure to record write_account in state changes in a RAII manner.
// Encapsulate this structure to record write_account in state changes in a RAII manner.
#[cfg(feature = "enable_execution_duration_record")]
pub struct StateAccountWrite(usize);

#[cfg(feature = "enable_execution_duration_record")]
impl StateAccountWrite {
pub fn new(size: usize) -> Self {
start_write_to_db_write_record();
Self(size)
}
}

#[cfg(feature = "enable_execution_duration_record")]
impl Drop for StateAccountWrite {
fn drop(&mut self) {
record_state_account_upsert_time();
record_state_account_size(self.0);
}
}
impl_write_macro!(
StateAccountWrite,
start_write_to_db_write_record,
record_state_account_upsert_time,
record_state_account_size,
record_receipts_append_time,
record_write_receipts_size
);

/// Record time of write account in StateChanges's write_to_db.
#[cfg(feature = "enable_execution_duration_record")]
Expand All @@ -486,25 +450,16 @@ fn record_state_bytecode_upsert_time() {
recorder().duration_record.write_to_db.record_state_bytecode_upsert_time();
}

/// Encapsulate this structure to record write_bytecode in state changes in a RAII manner.
// Encapsulate this structure to record write_bytecode in state changes in a RAII manner.
#[cfg(feature = "enable_execution_duration_record")]
pub struct StateBytecodeWrite(usize);

#[cfg(feature = "enable_execution_duration_record")]
impl StateBytecodeWrite {
pub fn new(size: usize) -> Self {
start_write_to_db_write_record();
Self(size)
}
}

#[cfg(feature = "enable_execution_duration_record")]
impl Drop for StateBytecodeWrite {
fn drop(&mut self) {
record_state_bytecode_upsert_time();
record_state_bytecode_size(self.0);
}
}
impl_write_macro!(
StateBytecodeWrite,
start_write_to_db_write_record,
record_state_bytecode_upsert_time,
record_state_bytecode_size,
record_receipts_append_time,
record_write_receipts_size
);

/// Record time of write bytecode in StateChanges's write_to_db.
#[cfg(feature = "enable_execution_duration_record")]
Expand All @@ -524,25 +479,16 @@ fn record_state_storage_upsert_time() {
recorder().duration_record.write_to_db.record_state_storage_upsert_time();
}

/// Encapsulate this structure to record write_storage in state changes in a RAII manner.
// Encapsulate this structure to record write_storage in state changes in a RAII manner.
#[cfg(feature = "enable_execution_duration_record")]
pub struct StateStorageWrite(usize);

#[cfg(feature = "enable_execution_duration_record")]
impl StateStorageWrite {
pub fn new(size: usize) -> Self {
start_write_to_db_write_record();
Self(size)
}
}

#[cfg(feature = "enable_execution_duration_record")]
impl Drop for StateStorageWrite {
fn drop(&mut self) {
record_state_storage_upsert_time();
record_state_storage_size(self.0);
}
}
impl_write_macro!(
StateStorageWrite,
start_write_to_db_write_record,
record_state_storage_upsert_time,
record_state_storage_size,
record_receipts_append_time,
record_write_receipts_size
);

/// Record time of write storage in StateChanges's write_to_db.
#[cfg(feature = "enable_execution_duration_record")]
Expand Down

0 comments on commit 8f529bd

Please sign in to comment.