Profiling jog

Published

September 3, 2024

We’ve cloned jog (Albert Krewinkel (2024)) into /src.

What we’re running

We jog the AST to count Str elements over a 4096-paragraph document, and profile it.

This requires a patched version of Pandoc, linked against this patched version of Lua.

Generating the profile

Code
os.system(jog_cmd(8, pandoc_path="~/.local/bin/pandoc")) # the patched version of Pandoc in Carlos's system
0

Timing

Code
hashes = [
  # "bdf5715c76fa68e5425537ad544ed1b5fb45869c",
  # "c25aa65bf5be67e8e30d47e5662434e577f8a2d3",
  # "b412d8bcd19a634c2d880109bb9876aa681d3bfd",
  # "5500a84bb904f7feca248ef2b610d292eced00ea"
  # "e3c22432cc9d84257bced58be90066b49d79a345",
  # "bb465a138b453de1a2ff0c5efb26e2ce80739cf5"
  # "0f842012f49c9103f15f9400f325ab0c252385e8",
  "7776d06e4350f65d36622bfa4bba7d6a82dd6409",
  "666365d4c1dd22fb7de00d59f17f13022022b380"
]

for hash in hashes:
  print(' - `jog`, commit `%s`: %.03f' % (hash, time_with_jog_commit(hash, jog_cmd(8, filter="../_supporting_docs/filters/2024-09-03-jog-str.lua"))))
  • jog, commit 7776d06e4350f65d36622bfa4bba7d6a82dd6409: 2.853
  • jog, commit 666365d4c1dd22fb7de00d59f17f13022022b380: 2.836

The last hashes refer to commits in Carlos’s fork of jog, so they might be merged yet.

Next steps

  • figure out a way to make foo.t faster and foo.content faster: collectively these account for 45% of the total runtime of the benchmarking filter.
  • split jog into different versions: with context, read-only, etc.
    • context management (pushing and popping the context array) accounts for 8.5% of the total running time in jog.

References

Albert Krewinkel. 2024. jog: Take an energetic trot along the pandoc AST.” https://github.com/tarleb/jog (Online; accessed 2024-09-03, commit bdf571.