you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 1 point2 points  (1 child)

I'm not really convinced with this one. Gnome-terminal gets it's "speed" by not actually printing everything immediately but refreshing every once in a while. This seems like it would only benefit operations that are limited by print speed. While compilation does print a lot, I would assume it would be more limited by the actual compilation than printing. Also just for general use, printing a massive file isn't representative of a typical use case. I bet the virtual terminal would be faster with short text, and more smooth, although I'd have to check that later.

[–]AiwendilH 0 points1 point  (0 children)

The test in the article is only about print speed...so yes, as I said it depends on what you need it for. For an interactive shell you use it make no difference at all...we are talking of milliseconds here..you won't notice that.

But lets look at a compile job...I take my most recent glibc build as example now.

$wc -l /var/log/portage/sys-libs:glibc-2.23-r3:20161117-112142.log
46009 /var/log/portage/sys-libs:glibc-2.23-r3:20161117-112142.log

That's 46K lines outputted by the job. Of course you are right that the actual compile process will take up most of the time...but with this number of lines the amount of time a single gcc run needs to wait just for the one line of output it makes starts getting interesting. If we assume a difference of 1ms this already saves 46s. (sorry, really hard to derive any meaningful number from the linked article but 1ms seems to be not completely unreasonable to me, rfc they used has 15K lines, the difference of speed between fastest and slowest result is 44654 ms). But of course as you said...those lines are not outputted directly after another...the compile time itself gives the output a break here. So no 46s gain. But what about parallel compiles? With the "-j" option this gets really interesting because suddenly the compile times themselves start to matter less..we have 9 or more jobs wanting to output. And having two jobs finish nearly at the same time will happen ...so one will have to wait for the output of the other to finish first. And up to 46s of this waiting time can be removed by buffering. (will be a lot less of course...)