git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] perf: compare diff algorithms

From
Thomas Rast <trast@student.ethz.ch>
Date
Mar 6, 2012, 13:15 UTC
Message-ID
<f113867bcf2fec3210cd1a997e1398903b3bdd76.1331039505.git.trast@student.ethz.ch>
In-Reply-To
<87pqcp6fyh.fsf@thomas.inf.ethz.ch>

8c912ee (teach --histogram to diff, 2011-07-12) claimed histogram diff was faster than both Myers and patience.

We have since incorporated a performance testing framework, so add a test that compares the various diff tasks performed in a real 'log -p' workload. This does indeed show that histogram diff slightly beats Myers, while patience is much slower than the others.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
The 3000 is pretty arbitrary but makes for a nice test duration.

I'm reluctant to put numbers into the message, since the whole point of the perf test framework is that you can easily get them too. But here's what I'm seeing:

  4000.1: log -3000 (baseline)          0.04(0.02+0.01)                                                     
  4000.2: log --raw -3000 (tree-only)   0.49(0.38+0.09)                                                     
  4000.3: log -p -3000 (Myers)          1.93(1.75+0.17)
  4000.4: log -p -3000 --histogram      1.90(1.74+0.15)
  4000.5: log -p -3000 --patience       2.25(2.07+0.16)
 t/perf/p4000-diff-algorithms.sh |   29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100755 t/perf/p4000-diff-algorithms.sh
diff --git a/t/perf/p4000-diff-algorithms.sh b/t/perf/p4000-diff-algorithms.sh
new file mode 100755
index 0000000..d6e505c
--- /dev/null
+++ b/t/perf/p4000-diff-algorithms.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+test_description="Tests diff generation performance"
+
+. ./perf-lib.sh
+
+test_perf_default_repo
+
+test_perf 'log -3000 (baseline)' '
+	git log -1000 >/dev/null
+'
+
+test_perf 'log --raw -3000 (tree-only)' '
+	git log --raw -3000 >/dev/null
+'
+
+test_perf 'log -p -3000 (Myers)' '
+	git log -p -3000 >/dev/null
+'
+
+test_perf 'log -p -3000 --histogram' '
+	git log -p -3000 --histogram >/dev/null
+'
+
+test_perf 'log -p -3000 --patience' '
+	git log -p -3000 --patience >/dev/null
+'
+
+test_done
-- 
1.7.9.2.467.g7fee4
Previous: Thomas RastNext: Thomas Rast
Message 4 of 23 in “config: Introduce --patience config variable”
  1. config: Introduce --patience config variableMichal Privoznik, Mar 6, 2012
  2. Jeff KingMar 6, 2012
  3. Thomas RastMar 6, 2012
  4. 1/2 perf: compare diff algorithmsThomas Rast, Mar 6, 2012
  5. 2/2 Document the --histogram diff optionThomas Rast, Mar 6, 2012
  6. Junio C HamanoMar 6, 2012
  7. Thomas RastMar 6, 2012
  8. Junio C HamanoMar 6, 2012
  9. Thomas RastMar 6, 2012
  10. Junio C HamanoMar 6, 2012
  11. Jakub NarebskiMar 6, 2012
  12. Thomas RastMar 7, 2012
  13. Junio C HamanoMar 7, 2012
  14. Jakub NarebskiMar 7, 2012
  15. Junio C HamanoMar 7, 2012
  16. René ScharfeMar 10, 2012
  17. Jeff KingMar 6, 2012
  18. Michal PrivoznikMar 6, 2012
  19. Matthieu MoyMar 6, 2012
  20. Jeff KingMar 6, 2012
  21. Junio C HamanoMar 7, 2012
  22. Jeff KingMar 7, 2012
  23. Junio C HamanoMar 7, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.