Как приращение указателя сравнивается с приращением индекса в C - PullRequest
4 голосов
/ 01 июня 2011

рассмотрим следующие два кода:

void PrintLetter(char *src)
{
 while(*src != '\0')
 {
   printf("%c",*src);
   src++;
 }
}

и

void PrintLetter(char *src)
{
 int i;
 for(i=0;src[i];i++)
  printf("%c",src[i]);
}

Есть ли разница в производительности между ними?

Ответы [ 2 ]

5 голосов
/ 01 июня 2011

Ничего. Компилятор выполнит свои оптимизации независимо от формы, которую вы пишете. Базовый код сборки такой же.

2 голосов
/ 01 июня 2011

Любая разница в производительности будет зависеть от компилятора.

Некоторые небольшие встроенные системы имеют довольно упрощенные компиляторы, которые могут выдавать немного другой код для одного, чем для другого - хотя без тестирования трудно догадаться, что может оказаться «лучше» (хотя, если бы мне пришлось угадывать «вслепую», Я бы, наверное, выбрал первое).

С помощью компиляторов на типичных настольных / серверных системах (например, gcc, VC ++, EDG) вы, скорее всего, получите (по существу) одинаковые результаты в любом случае, поэтому выбор между ними - просто вопрос выбора того, что вы считаете более читабельным .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...