perf: compare diff algorithms
authorThomas Rast <trast@student.ethz.ch>
Tue, 6 Mar 2012 13:15:01 +0000 (14:15 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 6 Mar 2012 19:48:11 +0000 (11:48 -0800)
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/perf/p4000-diff-algorithms.sh [new file with mode: 0755]

diff --git a/t/perf/p4000-diff-algorithms.sh b/t/perf/p4000-diff-algorithms.sh
new file mode 100755 (executable)
index 0000000..d6e505c
--- /dev/null
@@ -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