OpenImageIO/oiio — pull request #523 by lgritz (2013-02-18 00:07:31+00:00)
Title: maketx speed improvements

Another round of tightening up maketx performance. These changes overall speed up maketx by about an additional 15-20% across several formats and resolutions tested, both for single and multi-threaded operation. They consist of several somewhat orthogonal changes:

1. Allow IB::Iterator ctr that takes an ROI to also take the 'unclamped' flag. Also some simplification of other constructors. (This does not have a performance impact, but makes the next item easier to express.)

2. maketx perf: make copy_block use iterators and specialized types.

3. Change default for memory_used to report resident memory, not virtual memory. Make Linux properly make the distinction as well (previously only reported VM). (No performance improvement in itself, but makes it easier to understand memory use.)

4. maketx guts overhaul -- switch to shared_ptr and be careful about avoiding extra copies and freeing memory quickly. Features an overhaul of how we report time and memory use in -v -stats mode.

5. Speed up SHA-1 hashing: (a) avoid extra pixel copy for ImageBuf with local pixels. (b) chunk more than one scanline at a time.

6. Speed up SHA-1 further by using OpenSSL's implementation if available, it's a bit faster. It will fall back to our own if not found, or if USE_OPENSSL=0 is used at build time.