Large ===== We can use mmap = pointer on "memory" mapped on a file (handled by OS). For this one, the trick is to allocate a fixed-size buffer which will be able to load in memory a block of the image. This block is called the "scrolling block". It will lazily load the needed values when needed. The performances drop dramaticaly due to disc access, however it ensure that we are able to perform proper algorithm on the image as a whole. Further enhancement can be thought of in a multi-threading environement : * allocating more than 1 buffer (while we're iterating on the first one, the 2nd one is loading the next-to-be-iterated-values from the disc) * prediction/anotation system on algorithm that tag the way of iterating of algorithm so that we know how to preload data in memory We're not tbb so we won't do the pipeline implementation, however, we need to keep in mind that it's important to have the API designed so that a user can use tbb on top of our interface.