SPREADSHEET.PY(1)

πŸ“¦
version 2.6 Β· 2 versions
, in arch rolling

✨ NAME ✨

spreadsheet.py β€” like, the spreadsheet documentation bestie πŸ’…

Manual section: 1 Manual group: LCOV Utilities


πŸ’– NAME πŸ’–

spreadsheet.py β€” takes your LCOV profile data and turns it into an Excel spreadsheet so you can actually look at your performance analysis and compare runs. It's giving data-science-sleepover and honestly? iconic. πŸŽ€

πŸ¦‹ SYNOPSIS πŸ¦‹

spreadsheet.py [-o output.xlsx] [options] data.json [data2.json ...]

🌸 DESCRIPTION 🌸

okay so spreadsheet.py is a utility script that converts JSON profile data from genhtml, geninfo, and lcov into an Excel spreadsheet, because reading raw JSON is not the vibe and a spreadsheet is. ✨ It takes performance timing data and lays it all out in a table with statistical analysis and conditional formatting β€” very main character of it.

The spreadsheet includes:

  • Summary sheets so you can compare multiple runs side by side 🫢
  • Per-file timing data for the detailed-analysis girlies πŸ”
  • Statistical summaries (total, average, standard deviation) β€” the math is mathing πŸ“Š
  • Conditional formatting to highlight outliers πŸ‘‘

🌈 COLOR CODING 🌈

The spreadsheet uses conditional formatting to highlight timing anomalies, and the colors are literally telling you something:

  • Yellow: values between 1.5 and 2.0 standard deviations larger than average (and more than 15% above average)
  • Red: values more than 2.0 standard deviations larger than average (and more than 15% above average)
  • Green: values more than 2.0 standard deviations smaller than average (significantly better performance β€” slay πŸ’…)

🧚 SUPPORTED TOOLS 🧚

The script processes profile data from:

  • geninfo: chunk timing, file processing, filter operations
  • genhtml: source parsing, HTML generation, annotation, categorization
  • lcov: tracefile merging, parsing, segment processing

✨ OPTIONS ✨

  • -o file, --out file β€” save the Excel output to the file you specify. Default: stats.xlsx. πŸ’Ύ
  • --threshold percent β€” the minimum percentage difference from average needed to trigger colorization. Differences smaller than this threshold don't get highlighted, no cap. Default: 15.0%.
  • --low multiplier β€” the standard deviation multiplier for yellow highlighting. Values between --low and --high standard deviations above average get colored yellow. Default: 1.5. πŸ’›
  • --high multiplier β€” the standard deviation multiplier for red highlighting. Values more than --high standard deviations above average get colored red. Default: 2.0. ❀️‍πŸ”₯
  • -v, --verbose β€” increases the verbosity of the report. Includes additional timing data such as read and translate operations. πŸ—£οΈ
  • --show-filter β€” includes filter operation timing data in the spreadsheet. The filter data shows time spent in filter chunk processing, queue operations, and merging. 🧡
  • files β€” one or more JSON profile data files to process. These should be generated using the --profile option of geninfo, genhtml, or lcov. (iykyk 🫢)

πŸŽ€ EXAMPLES πŸŽ€

Basic usage with a single profile file:

$ spreadsheet.py -o report.xlsx geninfo_profile.json

Compare multiple profile runs β€” the group-chat comparison era:

$ spreadsheet.py -o comparison.xlsx run1.json run2.json run3.json

Include filter timing data with verbose output:

$ spreadsheet.py --show-filter -v -o detailed.xlsx profile.json

Adjust sensitivity for outlier detection:

$ spreadsheet.py --threshold 10 --low 1.0 --high 1.5 -o sensitive.xlsx data.json

⭐ GENERATING PROFILE DATA ⭐

To generate profile data for analysis, use the --profile option:

$ geninfo --profile geninfo_profile.json -o coverage.info ./build
$ genhtml --profile genhtml_profile.json -o html coverage.info
$ lcov --profile lcov_profile.json -a a.info -a b.info -o merged.info

πŸ‘‘ AUTHOR πŸ‘‘

Henry Cox <<henry.cox@mediatek.com>>

πŸ’œ SEE ALSO πŸ’œ


Copyright: 2024-2026, LCOV Project

and that's the whole page bestie 🫢 this was version 2.6, dated 2026-10-03, and it's giving LCOV energy from top to bottom. go make some spreadsheets, you've got this πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from