| 231 | } |
| 232 | |
| 233 | fn write_summary(&self, out: &mut impl fmt::Write) -> fmt::Result { |
| 234 | writeln!(out, "[ix-perf] cache hit rates:")?; |
| 235 | write_rate( |
| 236 | out, |
| 237 | " whnf_cache ", |
| 238 | &self.whnf_cache_hits, |
| 239 | &self.whnf_cache_misses, |
| 240 | )?; |
| 241 | write_rate( |
| 242 | out, |
| 243 | " whnf_no_delta ", |
| 244 | &self.whnf_no_delta_cache_hits, |
| 245 | &self.whnf_no_delta_cache_misses, |
| 246 | )?; |
| 247 | write_rate( |
| 248 | out, |
| 249 | " whnf_core ", |
| 250 | &self.whnf_core_cache_hits, |
| 251 | &self.whnf_core_cache_misses, |
| 252 | )?; |
| 253 | write_rate( |
| 254 | out, |
| 255 | " infer_cache ", |
| 256 | &self.infer_cache_hits, |
| 257 | &self.infer_cache_misses, |
| 258 | )?; |
| 259 | write_rate( |
| 260 | out, |
| 261 | " infer_only_cache ", |
| 262 | &self.infer_only_cache_hits, |
| 263 | &self.infer_only_cache_misses, |
| 264 | )?; |
| 265 | write_rate( |
| 266 | out, |
| 267 | " def_eq_cache ", |
| 268 | &self.def_eq_cache_hits, |
| 269 | &self.def_eq_cache_misses, |
| 270 | )?; |
| 271 | write_rate( |
| 272 | out, |
| 273 | " unfold_cache ", |
| 274 | &self.unfold_cache_hits, |
| 275 | &self.unfold_cache_misses, |
| 276 | )?; |
| 277 | write_rate( |
| 278 | out, |
| 279 | " is_prop_cache ", |
| 280 | &self.is_prop_cache_hits, |
| 281 | &self.is_prop_cache_misses, |
| 282 | )?; |
| 283 | |
| 284 | let fail_hits = self.def_eq_failure_hits.load(Ordering::Relaxed); |
| 285 | let fail_inserts = self.def_eq_failure_inserts.load(Ordering::Relaxed); |
| 286 | writeln!( |
| 287 | out, |
| 288 | " def_eq_failure {fail_hits} hits, {fail_inserts} inserts" |
| 289 | )?; |
| 290 | |