
On 5/18/06, Beman Dawes <bdawes@acm.org> wrote:
* Thanks for providing timings. That is much more believable than unsupported assertions that one technique is faster than another.
Thanks. Guided by lots of requests, we are working on providing much more elaborate set of benchmarks. Sorry for late answer; most of your questions hit us as a sniper rifle, and we appreciate it greatly. We divide answers into several emails, because some discussion topics could terminate faster than others. Notation: "memory-mapped file(s)" = "MMF"
* A design needs to support both memory-mapped files and regular files, with the same interface, so either implementation can be used as the need dictates. A programmer should be able to write portable code that will work with either implementation.
Good point. However, this question could converge to another: wherther it makes sense to use RAF because of when its efficiency cannot be exploited. Access by index or iterator does seem so convenient, but maybe such approach could cause additional overhead, unlikely though. Maybe other issues will show up. Need to implement and benchmark. Seems worth a try.
- Not all operating systems support memory-mapped files.
We do regard portability issues among the most important. We will surely implement RAF for the systems that do not support MMF. This is just an initial implementation to point out our view of the problem, and where we intend to go. Currently, our point of view is that the RAF library should provide functionality that can be implemented efficiently on systems that support MMF. It must be possible to implement on systems that do not support this feature, but with no efficiency guarantees (reasonable efficiency). Primarily this is because we beleave that MMF technology is the main reason for the RAF library to appear on C++ wish list, and why people would like to use it. Notably, it is difficult to find an OS not supporting them: All Unix systems conforming to SVr4, POSIX.1b (formerly POSIX.4), 4.4BSD, SUSv2 have it; in particular this includes Mac OS X and FreeBSD. MS Windows Systems have it since Win 95, and even Win CE has it. OS/2 does not support it explicitly, but it can be remedied by installation of page fault exception handler (things could be even better in Warp and Aurora). Mac OS 9.x and earlier Macintosh systems do not support file mapping, but to the best of our knowledge Apple has ceased to support those systems officially 2 or 3 years ago. -- Svyatoslav Trukhanov, Oleksii Ursulenko