Skip to content

Commit

Permalink
Merge pull request #6851 from bnavigator/llvm-timings-empty-column
Browse files Browse the repository at this point in the history
set non-reported llvm timing values to 0.0

(cherry picked from commit 9dfee63)
  • Loading branch information
sklam authored and esc committed Mar 25, 2021
1 parent 5c1ff12 commit b554c30
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
6 changes: 4 additions & 2 deletions numba/misc/llvm_pass_timings.py
Expand Up @@ -239,12 +239,14 @@ def parse(raw_data):
missing[k] = 0.0
# parse timings
n = r"\s*((?:[0-9]+\.)?[0-9]+)"
pat = f"\\s+{n}\\s*\\({n}%\\)" * (len(headers) - 1) + r"\s*(.*)"
pat = f"\\s+(?:{n}\\s*\\({n}%\\)|-+)" * (len(headers) - 1)
pat += r"\s*(.*)"
for ln in line_iter:
m = re.match(pat, ln)
if m is not None:
raw_data = list(m.groups())
data = {k: float(v) for k, v in zip(attrs, raw_data)}
data = {k: float(v) if v is not None else 0.0
for k, v in zip(attrs, raw_data)}
data.update(missing)
pass_name = raw_data[-1]
rec = PassTimingRecord(
Expand Down
36 changes: 36 additions & 0 deletions numba/tests/test_llvm_pass_timings.py
Expand Up @@ -5,6 +5,33 @@
from numba.misc import llvm_pass_timings as lpt


timings_raw1 = """
===-------------------------------------------------------------------------===
... Pass execution timing report ...
===-------------------------------------------------------------------------===
Total Execution Time: 0.0001 seconds (0.0001 wall clock)
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name ---
0.0001 ( 90.1%) 0.0001 ( 90.1%) 0.0001 ( 90.1%) 0.0001 ( 90.1%) A1
0.0000 ( 9.9%) 0.0000 ( 9.9%) 0.0000 ( 9.9%) 0.0000 ( 9.9%) A2
0.0001 (100.0%) 0.0001 (100.0%) 0.0001 (100.0%) 0.0001 (100.0%) Total
""" # noqa: E501

timings_raw2 = """
===-------------------------------------------------------------------------===
... Pass execution timing report ...
===-------------------------------------------------------------------------===
Total Execution Time: 0.0001 seconds (0.0001 wall clock)
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name ---
0.0001 ( 90.1%) ----- 0.0001 ( 90.1%) 0.0001 ( 90.1%) A1
0.0000 ( 9.9%) ----- 0.0000 ( 9.9%) 0.0000 ( 9.9%) A2
0.0001 (100.0%) ----- 0.0001 (100.0%) 0.0001 (100.0%) Total
""" # noqa: E501


class TestLLVMPassTimings(TestCase):

def test_usage(self):
Expand Down Expand Up @@ -61,6 +88,15 @@ def foo(n):
self.assertGreaterEqual(last, cur)
cur = last

def test_parse_raw(self):
timings1 = lpt.ProcessedPassTimings(timings_raw1)
self.assertAlmostEqual(timings1.get_total_time(), 0.0001)
self.assertIsInstance(timings1.summary(), str)

timings2 = lpt.ProcessedPassTimings(timings_raw2)
self.assertAlmostEqual(timings2.get_total_time(), 0.0001)
self.assertIsInstance(timings2.summary(), str)


class TestLLVMPassTimingsDisabled(TestCase):
def test_disabled_behavior(self):
Expand Down

0 comments on commit b554c30

Please sign in to comment.