"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.