Файл объемом 2 ГБ довольно большой, и вам необходимо знать обо всех возможных областях, которые могут выступать в качестве узких мест:
- Сам жесткий диск
- Интерфейс жесткого диска (IDE / SATA / RAID / USB?)
- Операционная система / файловая система
- Библиотека C / C ++
- Ваш код
Я бы начал с некоторых измерений:
Предполагая, что ваш диск способен читать / записывать со скоростью около 40 Мбит / с (что, вероятно, является реалистичной цифрой для начала), файл объемом 2 ГБ не может работать быстрее, чем около 50 секунд.
Сколько времени это на самом деле занимает?
Привет, Родди, используя метод чтения fstream
с файлами 1,1 ГБ и большими
буферы (128,255 или 512 МБ), необходимые
около 43-48 секунд и это то же самое
используя fstream getline (построчно).
CP копирует почти 2 минуты
файл.
В этом случае вы привязаны к оборудованию. cp должен читать и писать, и будет искать туда-сюда по поверхности диска, как сумасшедший, когда это сделает. Так что (как вы видите) он будет более чем в два раза хуже, чем простой случай «чтения».
Для повышения скорости первое, что я попробую, это более быстрый жесткий диск или SSD.
Вы не сказали, что такое интерфейс диска? SATA в значительной степени самый простой / быстрый вариант. Также (очевидно, это ...) убедитесь, что диск физически находится на той же машине, на которой работает код, в противном случае вы подключены к сети ...