Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
простейший конечный автомат - никак не изобразить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 15:50 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
log_here, А покажи сырой формат файла input_file.txt что в нем лежит - первые n-строк. и какие правила его формирования? если длина записей "плавает" у тебя buf3 не будет работать корректно. рекомендую кроме скорости чтения считать контрольную сумму данных из фала - чтобы заранее словить и логические ошибки алгоритма. также попробуй сделать buf4() с использованием boost::iostreams::mapped_file_source у тебя файл 90 гиг - усложнит чуток и придется прыгать по сегментам, но зато исключишь лишнюю копию данных в памяти - все упрется в диск и cpu. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 12:23 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
У меня какое-то адское déjà vu. Почему мы всё время рекомендуем новичкам использовать Memory Mapped Files даже там где задача - ярко выраженно требует поточной обработки. Коллеги. Поясните. Что за тренд такой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 12:29 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
mayton, Тут нет тренда. если автор ищет способ ускорить чтение файла - почему-бы не попробовать все способы? Также вы ведь не знаете все условия задачи. может для оптимального решения достаточно поправить несколько строк в том софте, который сохраняет пары int-значений в виде текста в 100 гиговый файл а потом заставляет другой процесс героически парсить это гавно. ну и если не сложно приведите свой пример поточной обработки. рассмотрим его плюсы и минусы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 14:51 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
PPAможет для оптимального решения достаточно поправить несколько строк в том софте, который сохраняет пары int-значений в виде текста в 100 гиговый файл а потом заставляет другой процесс героически парсить это гавно. memory mapped file на 100 гигов - здесь явно не при делах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 15:17 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
PPAесли автор ищет способ ускорить чтение файла - почему-бы не попробовать все способы? Судя по замерам не ту проблему он решает log_here7.8 МБ / 1.3 c = 6 МБ/c и 7.8 МБ / 2.6 c = 3 МБ/c это медленно даже если файл тянуть по 100 Мбитной сетке. Как-то тестил: чтение блоками по 64Кб оптимально, дальнейшее увеличение блока ускорения не дает. Мап тоже тестил, получилось одинаково по скорости. Проблема тут не в скорости чтения файла, а в скорости разбора. Тут парсер надо делать быстрый. Допустим скорость чтения 50 Мб/с (неоптимальное чтение среднего HDD), тогда получается что 10% времени чтение - 90% обработка. Ускорим мы чтение до 500 Мб/с: 1% чтение - 90% обработка. И толку от этих 9% ускорения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 15:31 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
PPAТакже вы ведь не знаете все условия задачи. может для оптимального решения достаточно поправить несколько строк в том софте, который сохраняет пары int-значений в виде текста в 100 гиговый файл а потом заставляет другой процесс героически парсить это гавно. Я согласен. Давайте заслушаем ВСЕ условия задачи. Кстати я-бы не начал перформить до тех пор пока не узнал бы целевую ОС. Судя по путям у афтора Linux - но хотелось-бы услышать подтверждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 15:35 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
maytonУ меня какое-то адское déjà vu. Почему мы всё время рекомендуем новичкам использовать Memory Mapped Files даже там где задача - ярко выраженно требует поточной обработки. Коллеги. Поясните. Что за тренд такой? Да вот я тоже не знаю, тем более что Memory Mapped Files ничего не ускоряют... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 17:06 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
MasterZivДа вот я тоже не знаю, тем более что Memory Mapped Files ничего не ускоряют... они ж для разделения данных между процессами, а не для ускорения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 17:48 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
ИзопропилMasterZivДа вот я тоже не знаю, тем более что Memory Mapped Files ничего не ускоряют... они ж для разделения данных между процессами, а не для ускорения. Коллеги! Ну блин куда мы заехали? При чём тут разделение? Сабж не о том. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 18:09 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
mayton, сколько мегабайт в секунду является нормальным на твой взгляд? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 18:14 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
Скорость линейного чтения с диска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 18:15 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
Опять двадцать пять. Вы о чём? Хотите что-бы я назвал скорость современного дискового интерфейса типа Sata-3 ? Я ее не помню дословно. Что такое нормально? Чтоб юзер был доволен текущим приложением. Вот это и есть критерий нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 18:18 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
Пользователь никогда (или почти никогда) не бывает доволен быстродействием программы. А "скорость линейного чтения с диска" - нормальный и объективный критерий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 18:21 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovА "скорость линейного чтения с диска" - нормальный и объективный критерий. Лучше всё же не полагаться на линейность, а в качестве критерия использовать скорость копирования этого же файла в /dev/nul. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 18:29 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
Изопропилmayton, сколько мегабайт в секунду является нормальным на твой взгляд? ~100 мб/с в среднем нормально. Замерить точнее просто: в фаре запускаешь копирование, в качестве места назначения пишешь nul. Будет показывать скорость чтения конкретного файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 18:31 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
Dima TБудет показывать скорость чтения конкретного файла. из кэша..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 18:48 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
Давайте вернёмся к нашей задаче. У нас 100 млрд целых чисел в текстовом файле и автору нужно это всё загрузить в коллекцию STD. Вот как-то в таком вот аспекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 19:29 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
maytonВот как-то в таком вот аспекте. память прикупил топикстартер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 19:38 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
ИзопропилDima TБудет показывать скорость чтения конкретного файла. из кэша..... Это со второго раза и то в случае если кэш больше файла. Если не путаю речь о 90 Гб, тут рядовой комп точно не закэширует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 19:54 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
На самом деле - афтор чёртов партизан и не говорит что он дальше будет делать с числами а это мега важно для оптимизации. Далее. Линух или Виндовс. Хер ево знает но пускай будет линух. Вот шаблон который я скачал в стековервлоу http://stackoverflow.com/questions/28197649/reading-binary-file-in-c-in-chunks Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Его можно взять за основу. Есть блочное чтение и достаточно низкий уровень API. Можно еще поискать open/read/close. Далее. Работаем с байтами. Если автору нужны символы - то конвертит. Синхронная работа. Код: plaintext 1. 2. 3. Собственно здесь должен быть некий finite-state-machine который разбирает поток символов на целые числа. Код: plaintext 1. 2. 3. 4. 5. Поскольку работаем синхронно - то чуть блокируем I/O. Для асинхронной работы нужно увеличить буфер и работать с двумя буферами или с кольцом и в 2 процесса. Вот вобщем-то такое моё предложение. Буду рад улучшениям и пожеланиям. Не возражаю против магии Хогвартса mmaped-files но прошу аргументации. Если лучше - то почему. Что достигаем? Что теряем? Напомню что в смежном топике мы при тестинге на запись не учитывали отложенный flush и получали неверную картину фиксации записи. Напомню также что афтор упорно пытается прогрузить 100 млрд в коллекцию. Возможно мы отговорим его от такого странного хода но в любом случае memory надо использовать по хозяйски и не вносить в уравнение "свободная память" нечто что не укладывается в прогноз по minimal requrements. Напомню также что решение любой задачи не должно быть краш-тестом для других приложений которые тихо зависнут или умрут по I/O timeout. Нужно помнить о кооперативном разделении всех ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 20:49 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
maytonНапомню также что афтор упорно пытается прогрузить 100 млрд в коллекцию. с этого начинать нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 22:33 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
mayton, ОС - Linux. Предположим для простоты, что собираюсь сортировать (внешняя сотрировка). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 01:52 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
log_hereПредположим для простотыдавай реальную задачу, алгоритмы внешней сортировки в любом учебнике описаны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 06:51 |
|
||
|
как быстрее всего прочесть большой файл с числами, каждое с новой строки?
|
|||
|---|---|---|---|
|
#18+
Создание тестового файла Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. у меня получилось 5398 Мб. Меряем фаром скорость чтения (копирование в nul) - 620 Мб/с Время 8,7 сек. это минимально возможное время. Цикл только чтение Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Время 9,1 сек. т.е. всего на 5% больше минимума. Замер на С++ (std::ifstream) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Время 9,5 сек. Чуть хуже, но не критично. 9% больше минимума. Добавляем примитивный парсер: все что не числа - то разделители Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Время 16,7 сек. т.е. уже почти половина времени пошла на разбор. А тут еще никакого сохранения нет. Как уже написал 18497959 - парсер надо оптимизировать, а не чтение ускорять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 07:46 |
|
||
|
|

start [/forum/topic.php?fid=57&startmsg=39116455&tid=2018695]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 270ms |
| total: | 520ms |

| 0 / 0 |
