Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Тут был продемонстрирован пример работы WinApi функции - ReadFile Нет никакой сложности перевести на c++ Siemargl, А чего такого??? Одним махом быстрее xD Всего лишь 0,8 сек. Быстренько отработали с массивом что надо, и закрыли. Увы - это практичнее, чем читать файл частями - искать нужное, и тратить драгоценное время. Когда всё тоже самое можно сделать за пару секунд, но используя при этом больше оперативной памяти В конце - то концов, Java этим не брезгует. И даже не подтирает за собою))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 22:54 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Няшик, Что тебе было непонятно в первом моем посте?? Для залетных поясню, что задача - практическая, а твое частное теоретическое решение для мелких файлов - оффтоп. Пиши нормальный вариант по теме топика и будешь велкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:00 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Siemargl, Я показал как читается файл размером 640 МБ (671 392 842 байт) за 0,8 секунд целиком . И продолжаешь говорить что функция ReadFile для маленьких файлов ? А ты смешной Задача была - подсказать как можно быстро читать большие файлы. Я показал, и не суть, что пример был на Delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:08 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикТут был продемонстрирован пример работы WinApi функции - ReadFile Нет никакой сложности перевести на c++ Siemargl, А чего такого??? Одним махом быстрее xD Всего лишь 0,8 сек. Быстренько отработали с массивом что надо, и закрыли. Увы - это практичнее, чем читать файл частями - искать нужное, и тратить драгоценное время. Когда всё тоже самое можно сделать за пару секунд, но используя при этом больше оперативной памяти В конце - то концов, Java этим не брезгует. И даже не подтирает за собою))) Подобный подход я тестировал во втором пункте, когда работал с памятью как с файлом (через объект QBuffer). В моем случае это оказался самый медленный вариант. p.s. не думаю, что ребята из Qt налажали и как-то неудачно реализовали этот функционал. Скорее всего для моей задачи под win- платформой будет тоже самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:10 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, Тогда как ты объяснишь это, что на Delphi это очень быстро работает? Да по любому косяк ваших c++ кодов. Даже и сомневаться не надо, и пусть там компания которая заслуживает почёта Ведь тесты чистые есть, и они показывают превосходные цифры в производительности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:12 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Няшик, ты не понимаешь сути. я думаю, нечего с тобой обсуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:17 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Siemargl, Как знаешь. Я сделал ещё тесты, на этот раз загрузил файлик размером 1,97 ГБ (2 120 760 783 байт) Потратив на это 71,545101 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 23:28 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикSiemargl, Как знаешь. Я сделал ещё тесты, на этот раз загрузил файлик размером 1,97 ГБ (2 120 760 783 байт) Потратив на это 71,545101 У меня 16,2 ГБ за 161 секунду обрабатывались. Если у вас указано время 71,54510 в секундах, то не вижу сверхестественных достижений. Но сравнивать вашу производительность с моей глупо: у нас разные исходные данные, а можно сравнивать только результаты одинаковых задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:04 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикReadLen:671392842 -- 640 МБ (671 392 842 байт) ЗА 0,832291 секунд. WinApi функция - ReadFileНа такой скорости с HDD читаются только разреженные (sparse) файлы. Даже для "обычных" SSD ~гигабайт в секунду - недостижимая фантастика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:10 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Я написал код, и указал ближайший файл большой, который помнил. Запустил, сделал скрин. И отправил сюда. AlekseySQLУ меня 16,2 ГБ за 161 секунду обрабатывались. Если у вас указано время 71,54510 в секундах, то не вижу сверхестественных достижений. Но сравнивать вашу производительность с моей глупо: у нас разные исходные данные, а можно сравнивать только результаты одинаковых задач. У тебя SSD а у меня HDD который работает с 2010 года по 10 - 15 часов. По этому, для моего 71,54510 для файла 2 гб. Это нормально Тесты моего диска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:29 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Кстати, если открыть диспетчер во время работы моей программы. То можно увидеть, что ReadFile из диска выжимает все соки, и читает на скорости 268 мб в секунду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:36 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикЯ написал код, и указал ближайший файл большой, который помнил. Запустил, сделал скрин. И отправил сюда.Проблема микробенчмарков не в том, чтобы их выполнить, а в том, чтобы выполнить их корректно . HDD чисто физически не может читать со скоростью 640/.8 ~= 800МБ/с. Скорость линейного чтения любых HDD не выходит за 300МБ/с. Скорость линейного чтения диска 2010 года, учитывая тогдашние плотности, будет на уровне 80-130МБ/с, в зависимости от ёмкости. А вот для разреженного файла, где надо просто забить память нулями или для файла, который был закэширован (тем же superfetch) и гигабайт в секунду - нормально. Вот только к чтению с диска это никак не относится. P.S. SSD у AlekseySQL - меня пока жаба давит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:40 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Ну, вроде максимальный порог 268 мб/сек мой хард может, и если диспетчер не врёт, то мой хард вот https://market.yandex.ru/product/1012789/spec?track=tabs Интерфейс Подключение SATA 3Gbit/s Внешняя скорость передачи данных 300 Мб/с Внутренняя скорость передачи данных 972 Мбит/с Временные характеристики Среднее время доступа, чтение 8.9 мс Среднее время доступа, запись 10.9 мс Время доступа full stroke 21 мс Время доступа track to track 2 мс Среднее время задержки (Latency) 4.2 мс К тому - же, замер у меня ювелирно точный, до 0,000000 секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:58 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
НяшикНу, вроде максимальный порог 268 мб/сек мой хард может, и если диспетчер не врёт, то мой хард вот https://market.yandex.ru/product/1012789/spec?track=tabs Интерфейс Подключение SATA 3Gbit/s Внешняя скорость передачи данных 300 Мб/с Внутренняя скорость передачи данных 972 Мбит/с А вот 972МБит/с ~= 126МБайт/с это уже обмен данными "с пластинами" и эта цифра уже соответствует спецификациям WDC . В точности вашей модели там нет, но есть аналогичная (по технологии и ёмкости).К тому - же, замер у меня ювелирно точный, до 0,000000 секунд.Это ещё одно заблуждение, которое проявится тогда, когда вы начнёте измерять интервалы на уровне долей миллисекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 03:35 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLDima TМожно и map, только скорость не в этом. Отличие там не в чтении, а в разборе на строки. Там для разбиения на строки простейший поиск конца строки. В итоге получилось намного быстрее штатного fgets(). В топике вроде писал на сколько ускорилось, найти не смог. У меня именно с map поиск конца строки (в одной большой строке) используется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. И никакого прироста производительности не замечено. Зачем тут strncpy() ? Размер ты знаешь, поэтому достаточно memcpy() Добавь внутрь этого цикла простейший счетчик и просто посчитай сколько строк в файле. Засеки время - получишь максимальную скорость чтения, а дальше думай как эту скорость не растерять. Можно в два потока организовать обработку: читаешь кусок файла, если в конце обрезанная строка, то переносишь ее в следующий блок, текущий блок отдаешь на обработку второму потоку, в след. блок дочитываешь из файла и т.д. Если порядок обработки строк не играет роли, то обрабатывающих потоков можно больше одного запустить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 09:06 |
|
||
|
Как быстро читать большие тексовые файлы?
|
|||
|---|---|---|---|
|
#18+
[quot Няшик] У тебя SSD а у меня HDD который работает с 2010 года по 10 - 15 часов. [quot] Нет, первые тесты были сделаны на обычном HDD и я вопрошал: "А будет ли прирост производительности на SSD?". Кстати, скорость 100 Мб/сек вполне нормальная для HDD (который в синтетических тестах показывает примерно 130-150 попугаев). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 10:25 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39588787&tid=2017991]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 286ms |
| total: | 537ms |

| 0 / 0 |
