Chia-Network / clvm_rs

Rust implementation of clvm
Apache License 2.0
67 stars 57 forks source link

Reduce fuzzing time to 15m #370

Closed Rigidity closed 7 months ago

coveralls-official[bot] commented 7 months ago

Pull Request Test Coverage Report for Build 7760275108


Totals Coverage Status
Change from base Build 7760070753: 0.0%
Covered Lines: 5221
Relevant Lines: 5578

💛 - Coveralls
arvidn commented 7 months ago

that time is specified in seconds. you're changing it from 30 seconds to 15 seconds.

arvidn commented 7 months ago

The breakdown of the build time is (this is the build + fuzz stage, that takes 36 minutes):

2024-02-02T18:53:43.5408030Z     Finished dev [unoptimized + debuginfo] target(s) in 41.26s
2024-02-02T18:54:32.5990780Z     Finished release [optimized] target(s) in 48.94s
2024-02-02T18:55:00.4396890Z     Finished dev [unoptimized + debuginfo] target(s) in 27.67s
2024-02-02T19:01:10.2542690Z     Finished release [optimized + debuginfo] target(s) in 5m 37s
2024-02-02T19:01:10.6255990Z     Finished release [optimized + debuginfo] target(s) in 0.22s
2024-02-02T19:05:05.8893510Z     Finished release [optimized + debuginfo] target(s) in 3m 38s
2024-02-02T19:05:06.1808120Z     Finished release [optimized + debuginfo] target(s) in 0.18s
2024-02-02T19:08:56.5548170Z     Finished release [optimized + debuginfo] target(s) in 3m 34s
2024-02-02T19:08:56.8921770Z     Finished release [optimized + debuginfo] target(s) in 0.22s
2024-02-02T19:12:49.2487930Z     Finished release [optimized + debuginfo] target(s) in 3m 36s
2024-02-02T19:12:49.5357490Z     Finished release [optimized + debuginfo] target(s) in 0.18s
2024-02-02T19:16:56.6101400Z     Finished release [optimized + debuginfo] target(s) in 3m 50s
2024-02-02T19:16:56.9839690Z     Finished release [optimized + debuginfo] target(s) in 0.19s
2024-02-02T19:20:42.3243430Z     Finished release [optimized + debuginfo] target(s) in 3m 09s
2024-02-02T19:20:42.4907660Z     Finished release [optimized + debuginfo] target(s) in 0.10s
2024-02-02T19:24:06.7487540Z     Finished release [optimized + debuginfo] target(s) in 3m 07s
2024-02-02T19:24:06.9294390Z     Finished release [optimized + debuginfo] target(s) in 0.11s
2024-02-02T19:27:45.9439470Z     Finished release [optimized + debuginfo] target(s) in 3m 22s
2024-02-02T19:27:46.1393640Z     Finished release [optimized + debuginfo] target(s) in 0.12s
2024-02-02T19:32:02.6431800Z     Finished release [optimized + debuginfo] target(s) in 4m 00s
2024-02-02T19:32:02.8577660Z     Finished release [optimized + debuginfo] target(s) in 0.13s

My guess is that the build time for each fuzz target is dominated by link time, and probably exacerbated by the fact that we use LTO. In my last attempt to make this go faster I switched from full LTO to thin LTO, which made a noticeable difference.

We probably want LTO enabled for our production builds, but maybe we should add a profile where we disable it just for the fuzzers.