| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Работа с объёмным файлом. |
| Автор: ParatroopeR 30.1.2005, 18:32 |
| Итак, у меня есть задача. Обработать исходный файл *.txt весом 60 мегов. Алгоритм обработки довольно таки простой, но суть не в этом. Накодировал я всё нормально и алгоритм пашет как часы(но в этом и проблема!!!), то что на обработку файла уходят часы, а мне нужно нехило всё это дело ускорить. Смысл в чём, так как я не могу понять как запихнуть файл целиком в оперативу, чтобы повысить быстродействие. На данный момент обработка ведётся "порциями", в файле порядка 800 тысяч строк. Я вытаскиваю оттуда по 4000 строк, заношу данные в интовский массив 4000 на 2000. В итоге за 5 минут удаётся обработать порядка 20000 строк, сами понимаете чем это потом выливается. Если создавать массив больше компилятор ест. начинает орать. Может кто уже сталкивался с такой проблемой. Вопрос: "Как запихнуть всё содержимое файла в ОП?" |
| Автор: En_t_end 30.1.2005, 18:54 |
| Распаралеливай процесс |
| Автор: ParatroopeR 30.1.2005, 19:21 |
| [C++Error] Unexpected reply. Этот вариант мне не подходит. Мне необходимо неоднократно обращаться к содержимому файла, паралель не паралель, хард от этого быстрее не станет. Может кто знает посерьёзней способ? Как запихнуть весь файл в ОП, это самый (Как мне кажется) правдоподобный способ увеличить производительность. Как сохранить в ОП около 1.5 миллиардов чисел? |
| Автор: _hunter 31.1.2005, 15:31 |
| CreateFileMapping() и MapViewOfFile() должны помочь + в чем проблема просто прочитать 60 метров ( это понты, на самом деле ) |
| Автор: En_t_end 31.1.2005, 15:35 |
| _hunter Он наверное сказал про 60 метров с таким смыслом, что может быть и больше CreateFileMapping() и MapViewOfFile() - это подойдет, точно. |
| Автор: _hunter 31.1.2005, 15:39 |
| ну так и сказал бы как-то так: "длинной не меньше 60-ти метров ( предполагается 6 км )" |
| Автор: ParatroopeR 31.1.2005, 21:22 |
| Да мне просто обращаться к нему надо около 1.5 миллиарда раз. Сами понимаете во, что превращается этот процесс. Пойду попробую. Пока заранее спасибо. А то, что может быть и больше, чтож вполне может быть. |
| Автор: _hunter 31.1.2005, 23:41 |
| на сколько больше? до двух ( или 4-х ) гигов спокойно можно читать -- пусть у винды голова болит что с этими данными делать. + нужно пересмотреть процесс -- может его оптимизировать можно |
| Автор: Hroft 2.2.2005, 14:48 |
| Его скорее всего не только можно, но и нужно оптимизировать. Я так думаю, дело вообще не в винте, а в том, что он делает с этими данными. |