"Honestly, I've witnessed programs that should be I/O bound turn into programs that are compute-bound, simply due to use of inefficient string parsing routines across enormous amounts of data(Okay, the developers also did other sloppy allocation-heavy things, but string certainly contributed.) "

 

I certainly believe it.  He said 30% in an off-hand way; that is possible, imho, under the conditions described, particularly those in bold, quoted above.  I work on a high-performance server, and not that long ago, there was a cache related bug causing the cache refresh worker to constantly run, never finishing and locking the cache during recalculation of the hashes.  The GC was running forever, because of a circular dependency between two handlers creating a massive amount of strings - XSLT/XML stuff.