update timings only on outer call (#16275)
* update timings only on outer call * test & format
This commit is contained in:
committed by
GitHub
parent
c723251575
commit
416312b30b
@ -24,7 +24,8 @@ fn bench_verify_account_changes_data(bencher: &mut Bencher) {
|
|||||||
false,
|
false,
|
||||||
&Rent::default(),
|
&Rent::default(),
|
||||||
&post,
|
&post,
|
||||||
&mut ExecuteDetailsTimings::default()
|
&mut ExecuteDetailsTimings::default(),
|
||||||
|
false,
|
||||||
),
|
),
|
||||||
Ok(())
|
Ok(())
|
||||||
);
|
);
|
||||||
@ -37,6 +38,7 @@ fn bench_verify_account_changes_data(bencher: &mut Bencher) {
|
|||||||
&Rent::default(),
|
&Rent::default(),
|
||||||
&post,
|
&post,
|
||||||
&mut ExecuteDetailsTimings::default(),
|
&mut ExecuteDetailsTimings::default(),
|
||||||
|
false,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
});
|
});
|
||||||
@ -60,6 +62,7 @@ fn bench_verify_account_changes_data(bencher: &mut Bencher) {
|
|||||||
&Rent::default(),
|
&Rent::default(),
|
||||||
&post,
|
&post,
|
||||||
&mut ExecuteDetailsTimings::default(),
|
&mut ExecuteDetailsTimings::default(),
|
||||||
|
false,
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
});
|
});
|
||||||
|
@ -104,6 +104,7 @@ impl PreAccount {
|
|||||||
rent: &Rent,
|
rent: &Rent,
|
||||||
post: &AccountSharedData,
|
post: &AccountSharedData,
|
||||||
timings: &mut ExecuteDetailsTimings,
|
timings: &mut ExecuteDetailsTimings,
|
||||||
|
outermost_call: bool,
|
||||||
) -> Result<(), InstructionError> {
|
) -> Result<(), InstructionError> {
|
||||||
let pre = self.account.borrow();
|
let pre = self.account.borrow();
|
||||||
|
|
||||||
@ -186,17 +187,19 @@ impl PreAccount {
|
|||||||
return Err(InstructionError::RentEpochModified);
|
return Err(InstructionError::RentEpochModified);
|
||||||
}
|
}
|
||||||
|
|
||||||
timings.total_account_count += 1;
|
if outermost_call {
|
||||||
timings.total_data_size += post.data().len();
|
timings.total_account_count += 1;
|
||||||
if owner_changed
|
timings.total_data_size += post.data().len();
|
||||||
|| lamports_changed
|
if owner_changed
|
||||||
|| data_len_changed
|
|| lamports_changed
|
||||||
|| executable_changed
|
|| data_len_changed
|
||||||
|| rent_epoch_changed
|
|| executable_changed
|
||||||
|| self.changed
|
|| rent_epoch_changed
|
||||||
{
|
|| self.changed
|
||||||
timings.changed_account_count += 1;
|
{
|
||||||
timings.data_size_changed += post.data().len();
|
timings.changed_account_count += 1;
|
||||||
|
timings.data_size_changed += post.data().len();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -942,6 +945,7 @@ impl MessageProcessor {
|
|||||||
rent,
|
rent,
|
||||||
&account,
|
&account,
|
||||||
timings,
|
timings,
|
||||||
|
true,
|
||||||
)?;
|
)?;
|
||||||
pre_sum += u128::from(pre_accounts[unique_index].lamports());
|
pre_sum += u128::from(pre_accounts[unique_index].lamports());
|
||||||
post_sum += u128::from(account.lamports);
|
post_sum += u128::from(account.lamports);
|
||||||
@ -990,7 +994,14 @@ impl MessageProcessor {
|
|||||||
.map_err(|_| InstructionError::AccountBorrowOutstanding)?;
|
.map_err(|_| InstructionError::AccountBorrowOutstanding)?;
|
||||||
}
|
}
|
||||||
let account = account.borrow();
|
let account = account.borrow();
|
||||||
pre_account.verify(&program_id, is_writable, &rent, &account, timings)?;
|
pre_account.verify(
|
||||||
|
&program_id,
|
||||||
|
is_writable,
|
||||||
|
&rent,
|
||||||
|
&account,
|
||||||
|
timings,
|
||||||
|
false,
|
||||||
|
)?;
|
||||||
pre_sum += u128::from(pre_account.lamports());
|
pre_sum += u128::from(pre_account.lamports());
|
||||||
post_sum += u128::from(account.lamports);
|
post_sum += u128::from(account.lamports);
|
||||||
if is_writable && !account.executable {
|
if is_writable && !account.executable {
|
||||||
@ -1360,6 +1371,7 @@ mod tests {
|
|||||||
&self.rent,
|
&self.rent,
|
||||||
&self.post,
|
&self.post,
|
||||||
&mut ExecuteDetailsTimings::default(),
|
&mut ExecuteDetailsTimings::default(),
|
||||||
|
false,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user