В C или C ++ char
- это просто однобайтовое целое число (хотя «один байт» может быть или не быть 8 битами). Это означает, что в типичном случае единственное различие, с которым вам приходится иметь дело, заключается в том, является ли однобайтовое сравнение более быстрым, чем многобайтовое сравнение.
По крайней мере, в большинстве случаев ответ - нет. Многие процессоры RISC вообще не имеют инструкций для работы с отдельными байтами, поэтому операция над одним байтом выполняется путем расширения знака байта до слова, работы со словом, а затем (при необходимости) маскирования всех биты за пределами одного байта возвращаются к нулям, т. е. работа с целым словом может в три раза превышать скорость работы с одним байтом.
Даже на чем-то вроде x86, который напрямую поддерживает однобайтовые операции, они все еще часто работают медленнее (на современном процессоре). Есть несколько вещей, которые способствуют этому. Прежде всего, инструкции, использующие регистры размера «естественного» для текущего режима, имеют более простое кодирование, чем инструкции, использующие другие размеры. Во-вторых, у значительного числа процессоров x86 есть так называемая «частичная остановка регистра» - хотя это все неявно, внутренне они делают что-то вроде RISC, выполняя операцию над полноразмерным регистром, а затем объединяют ее с другие байты исходного значения. Например, если вы выводите результат в AL, а затем ссылаетесь на EAX, выполнение последовательности займет больше времени, чем если бы вы произвели результат в EAX для начала.
OTOH, если вы посмотрите на достаточно старые процессоры, обратное может быть (и часто) верно. В качестве экстремального примера рассмотрим Intel 8080 или Zilog Z80. Оба имели некоторые 16-битные инструкции, но пути через ALU имели ширину всего 8 бит - например, 16-битное сложение фактически выполнялось как два последовательных 8-битных сложения. Если бы вы могли обойтись только с 8-битной операцией, это было бы примерно в два раза быстрее. Хотя 8-разрядные процессоры являются (удаленной) памятью на настольных компьютерах, они все еще используются в некоторых встроенных приложениях, поэтому это также не является устаревшим.