|
|
||||||
Скорость чтения csv с разных носителей21.05.2020, 23:27. Показов 10087. Ответов 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, или смотреть надо только на скорость чтения, а на запись пофигу |
|
|
||||||
| 25.06.2020, 17:37 [ТС] | ||||||
|
Avazart, вас, в очередной раз, подводит внимательность.
0
|
||||||
|
|
|
| 25.06.2020, 17:38 | |
|
Ищите к пример строку "3456789" т.е. то что будет найдено. Во вторых что бы символы были разные в подстроке.
В идеале нужно несколько тестов с разной длиной и уникальностью символов в искомой строке.
0
|
|
|
|
|||
| 25.06.2020, 18:06 [ТС] | |||
|
Добавлено через 17 минут Вот результаты для поиска подстроки: "3456789Пятый; Тридацть четвертый; 44221100; BBB" strstr: Time - 0.066000 std::find: Time - 0.192000 std::search: Time - 2.827000 std::boyer_moore_searcher: Time - 0.222000 std::boyer_moore_horspool_searcher: Time - 0.177000 Видно, что std::boyer_moore_horspool_searcher уже обгоняет std::find: strstr() - пока на первом месте. Тестирую в VS 2017.
0
|
|||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|
| 25.06.2020, 18:15 | |
|
0
|
|
|
|
||||||
| 25.06.2020, 18:57 [ТС] | ||||||
|
DrOffset, вот или ниже.
Если вынести часть расчета по подстроке, за рамки времени (к примеру считаем разово, далее используем при заливке каждого нового буфера). Как предложил zayats80888. Кликните здесь для просмотра всего текста
strstr: Time - 0.067000 find: Time - 0.195000 std::search: Time - 2.822000 std::boyer_moore_searcher: Time - 0.204000 std::boyer_moore_horspool_searcher: Time - 0.181000 Добавлено через 33 минуты отличия не сильные.
0
|
||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|
| 25.06.2020, 19:54 | |
|
bedvit, вообще это говорит о том, что в ms runtime функция strstr очень хорошо оптимизирована, а string.find - нет (или вообще не оптимизирована).
На MinGW, как и XLAT, я получил совершенно другие числа. А вот boyer-moore на моей VS 2017 и MinGW сработал примерно одинаково. Кстати, подобные баги с find были и в GCC ранее, например вот: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66414
0
|
|
|
|
|||||||
| 26.06.2020, 10:48 [ТС] | |||||||
|
Кликните здесь для просмотра всего текста
таиминг strstr: Time - 0.079000 std::find: Time - 0.197000 std::search: Time - 3.311000 std::boyer_moore_searcher: Time - 0.213000 std::boyer_moore_horspool_searcher: Time - 0.177000 std::boyer_moore_searcher(needle_no_time ): Time - 0.203000 std::boyer_moore_horspool_searcher(needl e_no_time): Time - 0.174000 BM: Time - 0.293000 Видим, что BM: проигрывает std:: DrOffset, вопрос, чей код будет быстрее под Win, мой на strstr или XLAT на string.find? Создать exe, обменяться и замерить?
0
|
|||||||
|
|
|||
| 26.06.2020, 11:21 [ТС] | |||
|
DrOffset, по вашей ссылки
Добавлено через 5 минут
0
|
|||
|
|
|
| 27.06.2020, 22:59 [ТС] | |
|
DrOffset, я не понял как у вас получилась найденная позиция 1070493176, если длина строки всего 1022888896.
Прилагаю свой exe, протестируйте у себя с учетом вопроса по позиции. Мой тест, см. рис.
0
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|
| 27.06.2020, 23:03 | |
|
0
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|
| 27.06.2020, 23:44 | |
|
0
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|
| 27.06.2020, 23:45 | |
|
Вот программа: test.zip
0
|
|
| 27.06.2020, 23:45 | |
|
Программа для чтения csv Скорость импорта CSV Bat - файл для чтения только одной строки из файла CSV Как правильно написать скрипт для чтения файла с расширением .csv(Excel) ? Скорость чтения/записи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Установка 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 реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|