Every time `setConf` is called on TupleWritable, `Writables.reloadWritableComparableCodes(conf)` is called. Unfortunately, `SequenceFile$Reader.readValue` calls `setConf` every single time. This burns a regrettable amount of CPU time.
Attached is a patch that prevents a given TupleWritable instance from reloading the code more than once, as well as a patch to cache (hashCode-wise) reading from the actual hadoop config, which has to run regexes and stuff. I can construe situations where this would break (somehow, you modify the configuration in between reading to two values), but nothing actually sane comes to mind.