Skip to content

Commit bc98b16

Browse files
committed
perf(verify_mmr_successor): Use destructuring
1 parent 8c940bc commit bc98b16

File tree

2 files changed

+29
-34
lines changed

2 files changed

+29
-34
lines changed

tasm-lib/benchmarks/tasm_lib_mmr_verify_mmr_successor.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
22
{
33
"name": "tasm_lib_mmr_verify_mmr_successor",
44
"benchmark_result": {
5-
"clock_cycle_count": 1578,
6-
"hash_table_height": 696,
5+
"clock_cycle_count": 1550,
6+
"hash_table_height": 666,
77
"u32_table_height": 1552,
8-
"op_stack_table_height": 918,
9-
"ram_table_height": 176
8+
"op_stack_table_height": 902,
9+
"ram_table_height": 174
1010
},
1111
"case": "CommonCase"
1212
},
1313
{
1414
"name": "tasm_lib_mmr_verify_mmr_successor",
1515
"benchmark_result": {
16-
"clock_cycle_count": 2658,
17-
"hash_table_height": 876,
16+
"clock_cycle_count": 2630,
17+
"hash_table_height": 846,
1818
"u32_table_height": 1875,
19-
"op_stack_table_height": 1518,
20-
"ram_table_height": 326
19+
"op_stack_table_height": 1502,
20+
"ram_table_height": 324
2121
},
2222
"case": "WorstCase"
2323
}

tasm-lib/src/mmr/verify_mmr_successor.rs

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use twenty_first::util_types::mmr::mmr_accumulator::MmrAccumulator;
55
use twenty_first::util_types::mmr::mmr_successor_proof::MmrSuccessorProof;
66

77
use crate::arithmetic::u64 as u64_lib;
8-
use crate::field;
98
use crate::hashing::merkle_step_mem_u64_index::MerkleStepMemU64Index;
109
use crate::hashing::merkle_step_u64_index::MerkleStepU64Index;
1110
use crate::mmr::leaf_index_to_mt_index_and_peak_index::MmrLeafIndexToMtIndexAndPeakIndex;
@@ -93,23 +92,21 @@ impl BasicSnippet for VerifyMmrSuccessor {
9392
// AFTER: _
9493
{entrypoint}:
9594
/* consistent old MMR? */
96-
dup 1
97-
{&field!(MmrAccumulator::peaks)} hint old_peaks: Pointer = stack[0]
98-
// _ *old *new *old_peaks
99-
100-
read_mem 1 hint old_peaks_len = stack[1]
101-
addi 1
102-
place 1
103-
// _ *old *new *old_peaks old_peaks_len
95+
pick 1
96+
{&MmrAccumulator::destructure()}
97+
hint old_num_leafs: Pointer = stack[0]
98+
hint old_peaks: Pointer = stack[1]
99+
// _ *new *old_peaks *old_num_leafs
104100

105-
pick 3
106-
{&field!(MmrAccumulator::leaf_count)} hint old_leaf_count: Pointer = stack[0]
107101
addi 1
108102
read_mem 2 hint old_num_leafs: u64 = stack[1..3]
109103
pop 1
110-
// _ *new *old_peaks old_peaks_len [old_num_leafs: u64]
104+
// _ *new *old_peaks [old_num_leafs: u64]
111105

112-
place 3 place 3
106+
pick 2
107+
read_mem 1 hint old_peaks_len = stack[1]
108+
addi 1
109+
place 1
113110
// _ *new [old_num_leafs: u64] *old_peaks old_peaks_len
114111

115112
dup 3 dup 3
@@ -120,23 +117,21 @@ impl BasicSnippet for VerifyMmrSuccessor {
120117
// _ *new [old_num_leafs: u64] *old_peaks
121118

122119
/* consistent new MMR? */
123-
dup 3
124-
{&field!(MmrAccumulator::peaks)} hint new_peaks: Pointer = stack[0]
125-
// _ *new [old_num_leafs: u64] *old_peaks *new_peaks
126-
127-
read_mem 1 hint new_peaks_len = stack[1]
128-
addi 1
129-
place 1
130-
// _ *new [old_num_leafs: u64] *old_peaks *new_peaks new_peaks_len
120+
pick 3
121+
{&MmrAccumulator::destructure()}
122+
hint new_num_leafs: Pointer = stack[0]
123+
hint new_peaks: Pointer = stack[1]
124+
// _ [old_num_leafs: u64] *old_peaks *new_peaks *new_num_leafs
131125

132-
pick 5
133-
{&field!(MmrAccumulator::leaf_count)} hint new_leaf_count: Pointer = stack[0]
134126
addi 1
135127
read_mem 2 hint new_num_leafs: u64 = stack[1..3]
136128
pop 1
137-
// _ [old_num_leafs: u64] *old_peaks *new_peaks new_peaks_len [new_num_leafs: u64]
129+
// _ [old_num_leafs: u64] *old_peaks *new_peaks [new_num_leafs: u64]
138130

139-
place 3 place 3
131+
pick 2
132+
read_mem 1 hint new_peaks_len = stack[1]
133+
addi 1
134+
place 1
140135
// _ [old_num_leafs: u64] *old_peaks [new_num_leafs: u64] *new_peaks new_peaks_len
141136

142137
dup 3 dup 3
@@ -385,7 +380,7 @@ impl BasicSnippet for VerifyMmrSuccessor {
385380

386381
fn sign_offs(&self) -> HashMap<Reviewer, SignOffFingerprint> {
387382
let mut sign_offs = HashMap::new();
388-
sign_offs.insert(Reviewer("ferdinand"), 0x8aea33a7d02a94a1.into());
383+
sign_offs.insert(Reviewer("ferdinand"), 0xeb1e81bd042d7a0c.into());
389384
sign_offs
390385
}
391386
}

0 commit comments

Comments
 (0)