Azamat Musoev
Azamat Musoev

Поиск символа в N байтах с помощью memchr (ЯП C) Как влияет размер N на процесс вычислений

char *memchr(buf,char,cnt);
Собс-но cnt-число байт в которых будет искаться символ char в buf.
Как вообще влияет величина cnt на число расходуемых тактов процессора?
Почему (не) следует поступать проверкой через цикл (если гарантированно символ встречается в sizeof(тип переменной cnt, не удосужился посмотреть) байтах)?

ЮК
Юлия Козлова

Чем больше cnt, тем дольше поиск (большее число расходуемых тактов) .

Линейный поиск
Исходник memchr из freebsd
На x86, некоторые реализации этой функции используют ассемблерную инструкцию rep scasb (на других платформах, возможно, тоже есть подобная) , также некоторые компиляторы умеют оптимизировать цикл в эту инструкцию -- получается самый быстрый вариант, но все равно время зависит от размера буфера.

Похожие вопросы
C#, память процессов
Создание дочерних процессов с помощью Win32 API. C/C++
Дана матрица А (n,n). C#
Дана матрица А (n,n). Нужна программа на C#
Вычисление времени выполнения кода в C++
C++ вычисление позиции персонажа через 150мс
Сколько символов можно закодировать с помощью 2 бит, 10 бит, 10 байт? Как вычислить? Спасибо.
Удаление предыдущего символа в c++
Распределение вычислений между процессами
C++ Прошу помощи! Разделить число по 4 символы.