crunch

1. To process, usually in a time-consuming or complicated way. Connotes an essentially trivial operation that is nonetheless painful to perform. The pain may be due to the triviality's being embedded in a loop from 1 to 1,000,000,000. "FORTRAN programs do mostly number crunching."

2. To reduce the size of a file without losing information by a complicated scheme that produces bit configurations completely unrelated to the original data, such as by a Huffman code. Since such compression usually takes more computations than simpler methods such as run-length encoding, the term is doubly appropriate. (This meaning is usually used in the construction "file crunching" to distinguish it from number crunching.) Use of crunch itself in this sense is rare among Unix hackers.

3. The hash character "#" (ASCII 35). Used at XEROX and CMU, among other places.

4. To squeeze program source into a minimum-size representation that will still compile or execute. The term came into being specifically for a famous program on the BBC micro that crunched BASIC source in order to make it run more quickly (it was a wholly interpretive BASIC, so the number of characters mattered). Obfuscated C Contest entries are often crunched; see the first example under that entry.