55 {
56
57 hal_init_perfcounters(1, 1);
58
59
60
61
62
63 ticks mark_min = 0xFFFFFFFFFFFFFFFF;
64 ticks mark_max = 0;
65 ticks mark_mean = 0;
68 ticks mark_0 = 0;
69 ticks mark_1 = 0;
70
71#if defined(NDEBUG)
72 ticks mark_current = 0;
73#endif
74
75
76
79
85
87
88
89
90
91 printf("\nNumbers correspond for \033[1;33mCGLHash2\033[0m.\n");
93 printf("// Running experiments:\t");
95 fflush(stdout);
96 printf("\r\x1b[K");
97
98
101
102 mark_0 = get_timestamp();
104 mark_1 = get_timestamp();
105
106
107
108 mark_two_isogeny[
i] = 0;
109 mark_two_isogeny[
i] = mark_1 - mark_0;
110
111 if(mark_min > mark_two_isogeny[
i])
112 mark_min = mark_two_isogeny[
i];
113
114 if(mark_max < mark_two_isogeny[
i])
115 mark_max = mark_two_isogeny[
i];
116
117 mark_mean += mark_two_isogeny[
i];
118 }
120
121 printf("Average: \033[1;32m%llu\033[0m\n\n", (unsigned long long)mark_mean );
122
123#if defined(NDEBUG)
125
127 printf("Q1: \033[1;33m%llu\033[0m\n", (unsigned long long)mark_current );
128
130 printf("Median: \033[1;33m%llu\033[0m\n", (unsigned long long)mark_current );
131
133 printf("Q3: \033[1;33m%llu\033[0m\n", (unsigned long long)mark_current );
134
135
136 printf("\n");
137 printf("Min: \033[1;34m%llu\033[0m\n", (unsigned long long)mark_min );
138 printf("Max: \033[1;31m%llu\033[0m\n", (unsigned long long)mark_max );
139 printf("\n");
140#endif
141
142
143
144
145
146 mark_min = 0xFFFFFFFFFFFFFFFF;
147 mark_max = 0;
148 mark_mean = 0;
149
150#if defined(NDEBUG)
151 mark_current = 0;
152#endif
153
160
161
163
164
165
166
167 printf("Numbers correspond for \033[1;33mCGLHash3\033[0m.\n");
169 printf("// Running experiments:\t");
171 fflush(stdout);
172 printf("\r\x1b[K");
173
176
177 mark_0 = get_timestamp();
179 mark_1 = get_timestamp();
180
181
182
183 mark_three_isogeny[
i] = 0;
184 mark_three_isogeny[
i] = mark_1 - mark_0;
185
186 if(mark_min > mark_three_isogeny[
i])
187 mark_min = mark_three_isogeny[
i];
188
189 if(mark_max < mark_three_isogeny[
i])
190 mark_max = mark_three_isogeny[
i];
191
192 mark_mean += mark_three_isogeny[
i];
193 }
195
196 printf("Average: \033[1;32m%llu\033[0m\n\n", (unsigned long long)mark_mean );
197
198#if defined(NDEBUG)
200
202 printf("Q1: \033[1;33m%llu\033[0m\n", (unsigned long long)mark_current );
203
205 printf("Median: \033[1;33m%llu\033[0m\n", (unsigned long long)mark_current );
206
208 printf("Q3: \033[1;33m%llu\033[0m\n", (unsigned long long)mark_current );
209
210
211 printf("\n");
212 printf("Min: \033[1;34m%llu\033[0m\n", (unsigned long long)mark_min );
213 printf("Max: \033[1;31m%llu\033[0m\n", (unsigned long long)mark_max );
214 printf("\n");
215#endif
216
217 char benchmarks_statistics_file_name[256];
218
219 strcpy(benchmarks_statistics_file_name, "BENCH-STATS-");
220
221#if defined(CYCLES)
222 strcat(benchmarks_statistics_file_name, "CLOCK-CYCLES-");
223#elif defined(TIME)
224 strcat(benchmarks_statistics_file_name, "NANOSECONDS-");
225#endif
226
227 strcat(benchmarks_statistics_file_name,
FIELD_NAME);
228 strcat(benchmarks_statistics_file_name, ".csv");
229
230 printStatisticsFile(benchmarks_statistics_file_name, mark_two_isogeny, mark_three_isogeny);
231
232 return 0;
233}
void quicksort(ticks arr[], int low, int high)
void printStatisticsFile(const char *file_name, ticks *two_isogeny_walk, ticks *three_isogeny_walk)
void fp2_set_to_zero(fp2_t *output)
void fp2_set_to_one(fp2_t *output)
void isogeny_walks_sample_bit_string(uint8_t *output)
void isogeny_walks_sample_trit_string(uint8_t *output)
void cgl_hash_digest_3(fp2_t *output, const cgl_hash_3_ctx *ctx, const uint8_t *input_trit_string)
void cgl_hash_digest_2(fp2_t *output, const cgl_hash_2_ctx *ctx, const uint8_t *input_bitstring)
void cgl_hash_init_2(cgl_hash_2_ctx *ctx, fp2_t input_A)
void cgl_hash_init_3(cgl_hash_3_ctx *ctx, fp2_t input_A, uint8_t choice)
#define NUMBER_OF_BENCHMARK_EXPERIMENTS