функция isspace()
, которую вы используете в первой попытке, проверяет гораздо больше случаев, чем просто пробел: она также проверяет наличие табуляции, возврата каретки, перевода строки, ... но ваша вторая попытка проверяет только пробел характер.
Теперь оптимизация вручную не может быть хорошей идеей: используйте инструмент профилирования и посмотрите, сколько времени потребуется для выполнения вашей функции. при компиляции используйте сборку релиза и включите оптимизацию , и вы обнаружите, что самая простая форма может быть настолько агрессивно оптимизирована компилятором, что даже не стоит думать об оптимизации вручную.
на самом низком уровне, ваши 2 функции идентичны (кроме вызова isspace()
), и я не удивлюсь, если ваш компилятор сгенерирует один и тот же код для 2 попыток. боюсь, вы ничего не оптимизировали.
Некоторые хорошие компиляторы способны генерировать листинг, который представляет собой удобочитаемый вывод сборки для скомпилированного кода. этот файл листинга - это файл, который вы абсолютно хотите прочитать, чтобы увидеть, как компилятор понимает ваш код и какая разница существует между двумя версиями одного и того же кода.