This is an archive of the discontinued LLVM Phabricator instance.

[analyzer][tests] Introduce analyzer benchmarking framework
ClosedPublic

Authored by vsavchenko on Jul 10 2020, 1:22 AM.

Details

Summary

This commit includes a couple of changes:

  • Benchmark selected projects by analyzing them multiple times
  • Compare two benchmarking results and visualizing them on one chart
  • Organize project build logging, so we can use the same code in benchmarks

Diff Detail

Event Timeline

vsavchenko created this revision.Jul 10 2020, 1:22 AM

Here is an example of how benchmarking chart looks like:

It has 20 runs on each of those projects. It was the same revision of the analyzer, so it is still very sensitive to other stuff happening on the test machine.

NoQ accepted this revision.Jul 13 2020, 4:41 PM

Box-and-whisker diagrams 👍

clang/utils/analyzer/SATestBenchmark.py
19
140–141

Why shorten? It's not that we're saving a lot of typing, and i think it's easier to read when package names are recognizable.

This revision is now accepted and ready to land.Jul 13 2020, 4:41 PM
This revision was automatically updated to reflect the committed changes.
vsavchenko marked an inline comment as done.
vsavchenko added inline comments.Jul 14 2020, 2:41 AM
clang/utils/analyzer/SATestBenchmark.py
140–141

I agree with that, but python world has a few very widespread shortenings:

numpy as np
matplotlib.pyplot as plt
seaborn as sns
pandas as pd

All the tutorials, official documentation and so on include these. So they might be even more recognizable as shortenings.