|
|
||||||
Скорость чтения csv с разных носителей21.05.2020, 23:27. Показов 9957. Ответов 148
Метки нет (Все метки)
Добрый день, джентльмены.
На днях набросал простой код поиска нужной строки в CSV-файле, см. под спойлером Кликните здесь для просмотра всего текста
Сегодня протестировал работу на з-х накопителях: HDD WDC WD10EACS-00ZJB0 (1000 ГБ, SATA-II) HDD WDC WD5000AAKX-001CA0 (500 ГБ, 7200 RPM, SATA-III) SSD KINGSTON SV300S37A120G (120 ГБ, SATA-III) В итоге время обработки CSW-файла размером 1ГБ у всех примерно одинаковое, что стало для меня откровением. Я предполагал, что в данном коде узкое место скорость чтения с накопителя. Чем можно объяснить такой результат теста?
0
|
||||||
| 21.05.2020, 23:27 | |
|
Ответы с готовыми решениями:
148
Создание тестов на скорость чтения и скорость записи Так ли важна в реальной жизни скорость записи SSD, или смотреть надо только на скорость чтения, а на запись пофигу |
|
|
|
| 08.06.2020, 19:19 | |
|
Это очевидная вещь, говорящая еще раз что Ваш код не к черту.
Есть смысл дочитывать данные при обнаружении частичного совпадения, примерно так как я делал тут для реализации построчного чтения
0
|
|
|
Just Do It!
|
||||||
| 08.06.2020, 19:56 | ||||||
|
поигрался ещё с тестом на предмет выкинуть char*
в 6-ом подтесте заменил на вектор в 7-ом на стринг причём в 7-ом хз на стандарт вот такое: is.read((char*)str.data(), size); зато результат зашкалил: весь код:
но с вектором ещё не всё, можно выкинуть оттуда стринг ...
0
|
||||||
|
Just Do It!
|
||||||||||||
| 08.06.2020, 22:04 | ||||||||||||
|
поэтому уже морально был готов дописать эту часть. заняло 10 минут, но желательно написать для этой фичи специальный тест на границы, я тестить не буду, так как я ленив. весь код:
код без вылизования под требования, которых как бы нет, но нужно обратить внимание на два момента: 1.
Это критично если подстрока находится в последней строке файла. или просто использовать мой генератор большого файла. один прогон без заморочек: там добавил код, который проверяет попала ли строка в буфер целиком или нет, если нет, то буфер перегружается уже с поправкой.
1
|
||||||||||||
|
Just Do It!
|
|||||||
| 08.06.2020, 22:46 | |||||||
|
правки:
как бы доказательство на необходимость специального тестирования. Добавлено через 5 минут ваще можно ещё пошоркать напильником, будет на 0.0001% ещё быстрее.
1
|
|||||||
|
|
|
| 08.06.2020, 23:15 [ТС] | |
|
XLAT, неплохо.
Теперь ищем в файле 10 ГБ 40 млн. строку. Видим паритет. Потом я отключаю системный буфер в функции, и мой код на 20% быстрее. Каков вывод: ваш алгоритм хорошо читает закешированные файлы, т.е. хорошо работает с памятью, а не с диском. Это тоже необходимо, но недостаточно для победы
0
|
|
|
|
||
| 09.06.2020, 00:21 [ТС] | ||
|
Тесты на HDD в основном это тест на скорость чтения с диска, у меня самый первый алгоритм (см. начало темы) считает столько же, как самый последний, просто потому, что расчет 1% времени, остальное 99% времени - это чтение с диска.
SSD уже показывает разницу в алгоритмах. Добавлено через 40 минут Avazart,
0
|
||
|
Just Do It!
|
||
| 09.06.2020, 00:30 | ||
|
bedvit, у мя к вам два вопроса: 1. можно код теста целиком?(там где у вас всё включено, т.е. ваще всё включено) 2. версия вашего компилятора? зы: компильнул щас в VS2019 там у мя 7 подтест 0 секунд а 6 по скорости обгоняет ваш в 3 раза.
0
|
||
|
|
||||||
| 09.06.2020, 11:39 [ТС] | ||||||
|
XLAT,
код Кликните здесь для просмотра всего текста
Тестовый стенд: Кликните здесь для просмотра всего текста
Операционная система Microsoft Windows 10 Professional
Тип ЦП QuadCore AMD Phenom II X4 Black Edition 955, 3200 MHz (16 x 200) Системная плата Asus M4A89GTD Pro (2 PCI, 1 PCI-E x1, 1 PCI-E x4, 2 PCI-E x16, 4 DDR3 DIMM, Audio, Video, Gigabit LAN, IEEE-1394) Чипсет системной платы AMD 890GX, AMD K10 Системная память 8192 МБ (DDR3-1333 DDR3 SDRAM) DIMM1: Kingston 99U5474-028.A00LF 4 ГБ DDR3-1333 DDR3 SDRAM (9-9-9-24 @ 666 МГц) (8-8-8-22 @ 609 МГц) (7-7-7-20 @ 533 МГц) (6-6-6-17 @ 457 МГц) DIMM2: Kingston 99P5458-005.A00LF 4 ГБ DDR3-1333 DDR3 SDRAM (9-9-9-24 @ 666 МГц) (8-8-8-22 @ 609 МГц) (7-7-7-20 @ 533 МГц) (6-6-6-17 @ 457 МГц) Хранение данных Дисковый накопитель SSD KINGSTON SV300S37A120G (120 ГБ, SATA-III) Дисковый накопитель HDD WDC WD10EACS-00ZJB0 (1000 ГБ, SATA-II)
1
|
||||||
|
|
||
| 09.06.2020, 13:09 [ТС] | ||
|
Первый раз, после создания файла FindRowsInCSVansi отрабатывает дольше, во всех остальных случая (и когда уже есть файл работает как во втором прогоне, т.е. быстрее). Поэтому сделал два запуска для примера, т.к. по факту файл будет, и тайминг будет из второго запуска.
Добавлено через 33 секунды Добавлено через 1 час 18 минут Или поясните идею с частичным поиском в конце буфера. На пальцах.
0
|
||
|
|
||||||
| 20.06.2020, 00:45 [ТС] | ||||||
|
Упростил код, в отличии от первого - искомая строка не может быть больше буфера.
В тестовом режиме сравнил с кодом от XLAT. Кликните здесь для просмотра всего текста
Времени было мало, красивости не наводил. XLAT, у вас обнаружились некоторые неточности, посмотрите сами. Но зато ваш код работает быстрее при кешировании, но нужно привести его в порядок, возможно время изменится.
0
|
||||||
|
|
||||||
| 20.06.2020, 11:52 [ТС] | ||||||
|
Тест на скорость чтения с буфером и без (когда файл читается первый раз) - 5 итераций:
FILE_FLAG_NO_BUFFERING bedvit1: Time - 2.683000 XLAT: Time - 3.277000 bedvit1: Time - 2.669000 XLAT: Time - 3.234000 bedvit1: Time - 2.712000 XLAT: Time - 3.244000 bedvit1: Time - 2.668000 XLAT: Time - 3.230000 bedvit1: Time - 2.662000 XLAT: Time - 3.229000 FILE_FLAG_BUFFERING bedvit1: Time - 1.284000 XLAT: Time - 1.008000 bedvit1: Time - 1.384000 XLAT: Time - 1.016000 bedvit1: Time - 1.288000 XLAT: Time - 1.026000 bedvit1: Time - 1.315000 XLAT: Time - 1.019000 bedvit1: Time - 1.287000 XLAT: Time - 1.012000 Кликните здесь для просмотра всего текста
Генератор CSV_1_GB.csv здесь (сообщение 50) выкладывал. Добавлено через 2 минуты Думаю, когда читается из кеша, здесь ассинхронность только помеха, со всеми накладными расходами и независимой работой с копией буфера.
0
|
||||||
| 20.06.2020, 11:52 | |
|
Программа для чтения csv Скорость импорта CSV Bat - файл для чтения только одной строки из файла CSV Как правильно написать скрипт для чтения файла с расширением .csv(Excel) ? Скорость чтения/записи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|