|
|
||||||
Скорость чтения csv с разных носителей21.05.2020, 23:27. Показов 10089. Ответов 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) ? Скорость чтения/записи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|