Как выбрать, оправдывает ли кто-то свои дизайнерские компромиссы с точки зрения оптимизированного кода, ясности реализации, эффективности и переносимости?
Соответствующим примером для цели этого вопроса может быть обработка больших файлов, где «большой файл» - это «довольно много ГБ» для проблемы, которая может быть упрощена с использованием методов произвольного доступа.
Подходы для чтения и изменения этого файла могут быть следующими:
- В любом случае используйте потоки и ищите желаемое место - это переносимо, но потенциально медленное и непонятное - это будет работать практически для всех ОС.
- сопоставьте соответствующую часть файла как большой блок. Например, mmap фрагмент файла размером 50 МБ для обработки для каждого фрагмента - это будет работать для многих ОС, в зависимости от тонкостей реализации mmap для этой системы.
- Просто выполните mmap для всего файла - для этого требуется 64-разрядная ОС, и это наиболее эффективный и понятный способ реализовать это, однако он не работает в 32-разрядных ОС.