@@ -19,6 +19,51 @@ understanding of patterns often seen in commit messages.
19
19
20
20
- If ` --width ` is specified multiple times, ignore all but the last occurrence.
21
21
22
+ - A large number of straightforward optimizations reduce total third-party
23
+ dependency count; compilation time; execution time; and dynamic memory
24
+ allocations. See below for details.
25
+
26
+ The optimization impact is measured with ` hyperfine ` and Valgrind's massif for
27
+ three distinct inputs: an empty file, a file that corresponds to the 3rd
28
+ quartile of message sizes, and Project Gutenberg's _ Don Quixote_ in plain-text
29
+ [[ quixote]] , where
30
+
31
+ $ wc corpus-* | grep [.]
32
+ 14 82 577 corpus-3rd-qu.txt
33
+ 43285 430276 2391727 corpus-don-quixote.txt
34
+ 0 0 0 corpus-empty.txt
35
+
36
+ $ sha256sum corpus-*
37
+ ff90dc6f56b02faa2f67a9b937ba935ea62f246e0165d7212b2d0e500668f40b corpus-3rd-qu.txt
38
+ bc899c11c714f764f90aaddfe08e1b50d67812da8e54bc12c814a4544ae0c8ff corpus-don-quixote.txt
39
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 corpus-empty.txt
40
+
41
+ Largely by removing the ` clap ` and ` regex ` packages ` commitmsgfmt ` has become
42
+ considerably leaner across the board, and without incurring undue future
43
+ maintenance cost:
44
+
45
+ VERSION | PACKAGES | BINARY SIZE | `.text` SECTION | MEAN BUILD TIME
46
+ | | stripped | | debug release
47
+ ----------+----------+-------------+-----------------+-----------------
48
+ 1.5.0 | 42 | 2103792 b | 1126.4 KiB | 3.073 s 4.525 s
49
+ 1.6.0 | 29 | 494032 b | 334.3 KiB | 0.910 s 1.143 s
50
+ 1.6.0 (%) | 70% | 23% | 30% | 30% 25%
51
+
52
+
53
+ VERSION | MEAN EXECUTION TIME | TOTAL ALLOCATIONS
54
+ | empty 3rd qu don-quixote | empty 3rd don-quixote
55
+ ----------+-----------------------------+---------------------------------------
56
+ 1.5.0 | 7.1 ms 7.6 ms 67.4 ms | 4,944,024 B 5,531,448 B 29,304,608 B
57
+ 1.6.0 | 4.9 ms 4.6 ms 52.6 ms | 15,736 B 36,760 B 22,015,736 B
58
+ 1.6.0 (%) | 69% 61% 78% | 0% 1% 75%
59
+
60
+
61
+ The ` clap ` package contributed the most to build time. The ` regex ` package
62
+ contributed the most to execution time and dynamic allocations. Neither
63
+ discovery surprised.
64
+
65
+ [ quixote ] : https://www.gutenberg.org/cache/epub/996/pg996.txt
66
+
22
67
## 1.5.0 - 2022-07-30
23
68
24
69
- Fix an edge case where footnote references followed by punctuation would
0 commit comments