|
|
||||||
Скорость чтения csv с разных носителей21.05.2020, 23:27. Показов 9900. Ответов 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
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 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
|
||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 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
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 27.06.2020, 23:03 | |
|
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 27.06.2020, 23:44 | |
|
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 27.06.2020, 23:45 | |
|
Вот программа: test.zip
0
|
|
| 27.06.2020, 23:45 | |
|
Программа для чтения csv Скорость импорта CSV Bat - файл для чтения только одной строки из файла CSV Как правильно написать скрипт для чтения файла с расширением .csv(Excel) ? Скорость чтения/записи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|