|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||||||||||||||||
Скорость сравнения двух массивов char12.11.2020, 18:48. Показов 4548. Ответов 64
Метки нет (Все метки)
Здравствуйте,
Вдруг возник такой простой вопрос: нужно просто сравнить два массива чаров. Собстно это можно сделать минимум тремя способами: -простым сравнением и перебором -через strncmp (сравниваем массивы с указанием длинны) -через strcmp(сравнивает массивы с \0) И у меня вопрос по скорости выполнения эти трех методов, я че то кое чего не понимаю, вот простейший код для тестирования:
1)Через перебор:
2)Через strncmp:
3)Через strcmp:
И вот результаты по скорости (в release) по сравнению равных массивов: 1)3500 (мс) 2)1580 (мс) 3)0 (мс) У меня собственно два вопроса: -Почему между перебором и strncmp - такая разница в целых два раза ? -И почему у strcmp - такая скорость ??? А вот результаты по скорости по сравнению не равных массивов, не равны они сразу в 1 элементе: 1)60 (мс) 2)232 (мс) 3)0 (мс) Ну strcmp остается, а вот перебор в этом случае теперь 4 раза быстрее strncmp. Почему так или что я делаю не так ?
0
|
|||||||||||||||||||||
| 12.11.2020, 18:48 | |
|
Ответы с готовыми решениями:
64
Функция для сравнения двух массивов Организация цикла сравнения значений элементов двух массивов Сравнение двух символьных массивов - char C++ |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||
| 12.11.2020, 21:31 | ||||||||
Сообщение было отмечено Optimus11 как решение
Решение
std::lexicographical_compare Добавлено через 30 минут
1
|
||||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 12.11.2020, 21:53 [ТС] | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 12.11.2020, 22:07 | |||||||
Вернее, что-то типа того. Чтоб одинаковые строки тоже отрабатывали.
1
|
|||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 12.11.2020, 22:12 [ТС] | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||||||
| 12.11.2020, 22:17 | ||||||||||||
1
|
||||||||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
| 16.11.2020, 21:45 [ТС] | |
|
Подскажите пожалуйста, а есть ли функция наподобие strncmp, но которая сравнивает не символы char, а сами значения в байтах ? Ну типы принимает указатель на void, как memcpy с сравнивала бы именно значения байт ?
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 16.11.2020, 21:49 | |
|
0
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||
| 16.11.2020, 21:54 [ТС] | |||||||
0
|
|||||||
|
38 / 13 / 3
Регистрация: 30.09.2020
Сообщений: 65
|
|
| 16.11.2020, 21:54 | |
|
1
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
| 16.11.2020, 21:59 [ТС] | |
|
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 16.11.2020, 22:00 | ||
|
strcmp отличается от mtmcmp только тем, что первая ждёт ноль в конце каждой последовательности Не очень понимаю, что ты пытаешься сделать
0
|
||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||
| 16.11.2020, 22:04 [ТС] | |||||||
0
|
|||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 16.11.2020, 22:09 | |||||||
|
И так и так хреново
1
|
|||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 16.11.2020, 22:11 [ТС] | ||
|
А почему и так и так хреново ? Разве ну покрайней мере memcmp - не для этого существуют ?
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 16.11.2020, 22:12 | |
|
0
|
|
|
38 / 13 / 3
Регистрация: 30.09.2020
Сообщений: 65
|
|
| 16.11.2020, 22:12 | |
|
1
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
| 16.11.2020, 22:19 | ||||||
|
strncpy ограничена нулём в конце строки. Если же используешь memcpy, то надо сравнивать ещё и размеры
Добавлено через 2 минуты
Воспользуйся std::lexicographical_compare
1
|
||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 16.11.2020, 22:48 [ТС] | ||
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 16.11.2020, 22:58 | |||||||
Подозреваю, что ты просто плохо понимаешь, что хочешь сделать. То, что показано выше, это обычно нафиг никому не нужно
1
|
|||||||
| 16.11.2020, 22:58 | |
|
Помогаю со студенческими работами здесь
20
Перемножение столбиком двух массивов char
Оптимизация сравнения двух массивов Сравнения двух массивов по двум значениям Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|