lcov-util
Utility commands to manipulate and analyze LCOV tracefiles blazingly fast.
LCOV is a graphical front-end for coverage testing tool gcov. It collects gcov data for multiple source files and stores them into the file called as "tracefile".
The purpose of this crate is to operate the LCOV tracefile faster than the original LCOV Perl implementation.
Install
$ cargo install lcov-util
Performance
Merge LCOV tracefiles
Comparing the execution of merging LCOV tracefiles, between 3 programs:
lcov 1.13: Latest released version ofLCOVlcov master: Latest development version ofLCOVlcov-merge:lcov-mergeexecutable fromlcov-utilv0.1.1
with 3 datasets (generated by mkinfo tool from LCOV repository):
- small: merging 5 small tracefiles (2 tests, 5 source files)
- medium: merging 5 medium tracefiles (3 tests, 50 source files)
- large: merging 5 large tracefiles (2 tests, 500 source files)
| small | medium | large | |
|---|---|---|---|
lcov 1.13 |
3.55s | 11.36s | 500.17s |
lcov master |
0.57s | 5.38s | 52.44s |
lcov-merge |
0.06s | 0.74s | 10.16s |
In this benchmark, lcov-merge is 15-60x faster than lcov 1.13, and 5-9.5x faster than lcov-master.
- Environment:
- Arch Linux (Linux 4.15.5) on Virtualbox
- Intel Core i7 3930K @ 3.20GHz
See benchsuite directory for details.
License
This project is licensed under either of
Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in lcov by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.