# Tests run on Mac OS X 10.11.4, Terminal window maximized on 1440x900@2x HiDPI 60Hz screen
# Menlo for Powerline 13pt, Antialiasing enabled, solid background, 10k lines scrollback buffer
sysctl -n machdep.cpu.brand_string
Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz
# Count files and warm filesystem cache:
find /Volumes/FELIX4TBA/Restore | wc -l
110435 # number of files / scrolled lines
# Baseline writing to null device and making sure fs cache is warm:
find /Volumes/FELIX4TBA/Restore > /dev/null 0,03s user 0,14s system 95% cpu 0,178 total
# Terminal 2.6.1 (361.1):
find /Volumes/FELIX4TBA/Restore 0,05s user 0,21s system 50% cpu 0,529 total
find /Volumes/FELIX4TBA/Restore 0,06s user 0,22s system 48% cpu 0,566 total
find /Volumes/FELIX4TBA/Restore 0,05s user 0,21s system 51% cpu 0,519 total
# Measure cpu time for iTerm build 20160416:
# new session
find /Volumes/FELIX4TBA/Restore 0,09s user 0,28s system 6% cpu 5,511 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,27s system 1% cpu 22,962 total
find /Volumes/FELIX4TBA/Restore 0,08s user 0,28s system 4% cpu 8,037 total
# new session
find /Volumes/FELIX4TBA/Restore 0,09s user 0,28s system 1% cpu 29,468 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,25s system 1% cpu 30,016 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,29s system 1% cpu 32,039 total
# new session
find /Volumes/FELIX4TBA/Restore 0,09s user 0,26s system 3% cpu 9,061 total
# new session
find /Volumes/FELIX4TBA/Restore 0,08s user 0,25s system 1% cpu 17,803 total
find /Volumes/FELIX4TBA/Restore 0,08s user 0,27s system 3% cpu 8,849 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,29s system 1% cpu 26,685 total
find /Volumes/FELIX4TBA/Restore 0,08s user 0,27s system 2% cpu 13,710 total
# new session
find /Volumes/FELIX4TBA/Restore 0,09s user 0,25s system 4% cpu 7,088 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,28s system 2% cpu 14,279 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,29s system 1% cpu 24,619 total
# Measure cpu time for iTerm build 20160417:
find /Volumes/FELIX4TBA/Restore 0,09s user 0,25s system 0% cpu 33,504 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,29s system 1% cpu 34,717 total
# new session
find /Volumes/FELIX4TBA/Restore 0,09s user 0,26s system 1% cpu 33,712 total
find /Volumes/FELIX4TBA/Restore 0,08s user 0,27s system 1% cpu 34,612 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,28s system 1% cpu 34,612 total
# new session
find /Volumes/FELIX4TBA/Restore 0,09s user 0,25s system 0% cpu 34,127 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,29s system 1% cpu 35,684 total
# Measure cpu time for iTerm build 20160419:
# new session
find /Volumes/FELIX4TBA/Restore 0,09s user 0,25s system 1% cpu 33,489 total
find /Volumes/FELIX4TBA/Restore 0,10s user 0,30s system 1% cpu 35,632 total
find /Volumes/FELIX4TBA/Restore 0,10s user 0,30s system 1% cpu 35,445 total
# new session
find /Volumes/FELIX4TBA/Restore 0,11s user 0,34s system 3% cpu 14,597 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,27s system 2% cpu 13,190 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,28s system 3% cpu 9,839 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,27s system 3% cpu 10,461 total
# Also tested on external 4k display at 3200x1800@2x HiDPI 60Hz maximized
find /Volumes/FELIX4TBA/Restore 0,12s user 0,41s system 0% cpu 1:48,66 total
# vs. Terminal.app
find /Volumes/FELIX4TBA/Restore 0,07s user 0,25s system 45% cpu 0,722 total
# And with a small 80x25 window:
# iTerm build 20160416:
find /Volumes/FELIX4TBA/Restore 0,08s user 0,24s system 29% cpu 1,059 total
find /Volumes/FELIX4TBA/Restore 0,08s user 0,26s system 33% cpu 1,006 total
find /Volumes/FELIX4TBA/Restore 0,08s user 0,24s system 27% cpu 1,159 total
# iTerm build 20160417:
find /Volumes/FELIX4TBA/Restore 0,09s user 0,26s system 4% cpu 8,271 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,27s system 3% cpu 11,529 total
find /Volumes/FELIX4TBA/Restore 0,08s user 0,26s system 9% cpu 3,472 total
find /Volumes/FELIX4TBA/Restore 0,09s user 0,29s system 3% cpu 10,832 total
find /Volumes/FELIX4TBA/Restore 0,08s user 0,24s system 10% cpu 3,136 total
I also looked at Intel Power Gadget to make sense of the wildly different results between test runs:
The idle cpu load was fairly stable at around 5-10%.
At least for the 3200x1800 case the achieved fps was ~10-12 fps and combined cpu and gpu load hit the termal limit of ~100°C and both the cpu and gpu were throttled (idle temp is ~50°C).
At the benchmarked 1440x900 the i7 is throttling the cpu core and keeps the gpu core at max core to try to keep up with screen updates reaching ~25-30 fps while staying withing the tdp. If the processor cools down engough, it's possible to run through a benchmark invocation without any throttling and even have turboboosting on the cpu core, giving a big boost.
It always went from roughly 5w idle to 20w during scrolling, so there was enough headroom to the 28w combined power limit of cpu and gpu core and the gpu core never ran at max freq. The gpu used a higher core clock, if I lowered the terminal window size, so it seems at bigger sizes cpu is limiting the framerate.
Terminal.app refreshes the screen during scrolling at ~15-20 fps, while holding a key with key repeat tweaked to 10 ms it reaches close to 60 fps. So it seems to use a context sensitive update rate similar to what I suggested above.
It's notable that at the less taxing 80x25 window size, the 60 fps build is consistently much slower than the 30 fps build, even though it manages to update the screen at ~50 fps.
While some of the performance differences between runs might be related to throttling/boosting, I suspect that there are additional reasons. For example in the 80x25 case the 30 fps build seemed to not be blocking on screen updates, while the 60 fps build did.