@@ -897,6 +897,7 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
897897 )
898898 } ;
899899
900+ let gen_start = Instant :: now ( ) ;
900901 // Meta info
901902 // The most time any block is executed
902903 let mut block_max_num_proofs = 0 ;
@@ -936,7 +937,7 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
936937 let zero = Integer :: from ( 0 ) ;
937938 let one = Integer :: from ( 1 ) ;
938939 // Start from entry block, compute value of witnesses
939- // Note: block_vars_matrix are sorted by block_num_proofs, tie-breaked by block id
940+ // Note: block_vars_matrix are sorted by block_num_proofs, tie-breaked by block id
940941 // Thus, block_vars_matrix[0] might NOT store the executions of block 0!
941942 let mut block_vars_matrix = vec ! [ Vec :: new( ) ; num_blocks_live] ;
942943 let mut exec_inputs = Vec :: new ( ) ;
@@ -1038,14 +1039,14 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
10381039 . concat ( ) ;
10391040 let inputs_assignment = Assignment :: new (
10401041 & inputs
1041- . iter ( )
1042+ . into_iter ( )
10421043 . map ( |i| integer_to_bytes ( i. clone ( ) ) )
10431044 . collect :: < Vec < [ u8 ; 32 ] > > ( ) ,
10441045 )
10451046 . unwrap ( ) ;
10461047 let vars_assignment = Assignment :: new (
10471048 & vars
1048- . iter ( )
1049+ . into_iter ( )
10491050 . map ( |i| integer_to_bytes ( i. clone ( ) ) )
10501051 . collect :: < Vec < [ u8 ; 32 ] > > ( ) ,
10511052 )
@@ -1055,7 +1056,10 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
10551056 exec_inputs. push ( inputs_assignment. clone ( ) ) ;
10561057 block_vars_matrix[ slot] . push ( vars_assignment) ;
10571058 }
1059+ let gen_time = gen_start. elapsed ( ) ;
1060+ println ! ( "\n --\n Gen time: {}ms" , gen_time. as_millis( ) ) ;
10581061
1062+ let record_start = Instant :: now ( ) ;
10591063 // Initial Physical & Virtual Memory: valid, _, addr, data (ts and ls are both 0 and are not recorded)
10601064 let mut init_phy_mems_list = Vec :: new ( ) ;
10611065 for i in 0 ..init_phy_mem_list. len ( ) {
@@ -1088,7 +1092,7 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
10881092
10891093 init_vir_mems_list. push (
10901094 Assignment :: new (
1091- & mem. iter ( )
1095+ & mem. into_iter ( )
10921096 . map ( |i| integer_to_bytes ( i. clone ( ) ) )
10931097 . collect :: < Vec < [ u8 ; 32 ] > > ( ) ,
10941098 )
@@ -1122,7 +1126,7 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
11221126 if i == phy_mem_list. len ( ) - 1 {
11231127 addr_phy_mems_list. push (
11241128 Assignment :: new (
1125- & mem. iter ( )
1129+ & mem. into_iter ( )
11261130 . map ( |i| integer_to_bytes ( i. clone ( ) ) )
11271131 . collect :: < Vec < [ u8 ; 32 ] > > ( ) ,
11281132 )
@@ -1191,7 +1195,7 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
11911195 if i == vir_mem_list. len ( ) - 1 {
11921196 addr_vir_mems_list. push (
11931197 Assignment :: new (
1194- & mem. iter ( )
1198+ & mem. into_iter ( )
11951199 . map ( |i| integer_to_bytes ( i. clone ( ) ) )
11961200 . collect :: < Vec < [ u8 ; 32 ] > > ( ) ,
11971201 )
@@ -1200,7 +1204,7 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
12001204 addr_ts_bits_list. push (
12011205 Assignment :: new (
12021206 & ts_bits
1203- . iter ( )
1207+ . into_iter ( )
12041208 . map ( |i| integer_to_bytes ( i. clone ( ) ) )
12051209 . collect :: < Vec < [ u8 ; 32 ] > > ( ) ,
12061210 )
@@ -1247,18 +1251,20 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
12471251 println ! ( "{:3} " , func_outputs) ;
12481252
12491253 let func_inputs = entry_regs
1250- . iter ( )
1254+ . into_iter ( )
12511255 . map ( |i| integer_to_bytes ( i. clone ( ) ) )
12521256 . collect ( ) ;
12531257 let input_stack = entry_stacks
1254- . iter ( )
1258+ . into_iter ( )
12551259 . map ( |i| integer_to_bytes ( i. clone ( ) ) )
12561260 . collect ( ) ;
12571261 let input_mem = entry_arrays
1258- . iter ( )
1262+ . into_iter ( )
12591263 . map ( |i| integer_to_bytes ( i. clone ( ) ) )
12601264 . collect ( ) ;
12611265 let func_outputs = integer_to_bytes ( func_outputs) ;
1266+ let record_time = record_start. elapsed ( ) ;
1267+ println ! ( "\n --\n Record time: {}ms" , record_time. as_millis( ) ) ;
12621268
12631269 RunTimeKnowledge {
12641270 block_max_num_proofs,
@@ -1513,6 +1519,7 @@ fn main() {
15131519 // Obtain Inputs
15141520 // --
15151521 let witness_start = Instant :: now ( ) ;
1522+ let read_input_start = Instant :: now ( ) ;
15161523 // Assume inputs are listed in the order of the parameters
15171524 let mut entry_regs: Vec < Integer > = Vec :: new ( ) ;
15181525 // Keep track of %SP and %AS and record initial memory state
@@ -1594,6 +1601,8 @@ fn main() {
15941601 reader. read_line ( & mut buffer) . unwrap ( ) ;
15951602 }
15961603 }
1604+ let read_input_time = read_input_start. elapsed ( ) ;
1605+ println ! ( "\n --\n Read input time: {}ms" , read_input_time. as_millis( ) ) ;
15971606
15981607 println ! ( "INPUT: {:?}" , entry_regs) ;
15991608
0 commit comments