Loop hardening strategically inserts duplicate instructions to detect irregularities in the execution (perhaps caused by some sort of malicious outside interference). This incurrs a performance overhead. This table illustrates this performance impact on a variety of real-world programs (taken from GNU coreutils).
Program | Hardened | Mean Runtime (ms) | Standard Deviation |
---|---|---|---|
wc | Yes | 1.7 | 0.5 |
No | 1.1 | 0.4 | |
uniq | Yes | 0.6 | 0.4 |
No | 0.1 | 0.5 | |
readlink | Yes | 2.6 | 0.4 |
No | 2.0 | 0.8 | |
cat | Yes | 1.5 | 0.6 |
No | 1.4 | 0.2 | |
basename | Yes | 3.5 | 0.2 |
No | 2.5 | 0.3 |