У меня есть что-то вроде этогоКогда использовать регистры в C?
register unsigned int a, b, c;
int n;
for (n = 0; n < 10; ++n){
c = a + b
b = a
a = c
array[n] = c;
}
, что он делает, это не имеет значения. Код работает быстро так, как сейчас, медленнее, если ключевое слово register удалено. Однако, когда я добавляю регистр до int n, он работает медленнее, чем сейчас, но быстрее, чем если не используются регистры.
Может кто-нибудь объяснить это мне? Благодарю.
Сколько общих регистров имеет целевая архитектура? Кроме того, какой компилятор? –
Я использовал gcc в mac xcode – SuperString
Собираетесь ли вы с включенными полными оптимизациями (например, '-O3')? Большинство оптимизаций компилятора, включая распределение регистров, по умолчанию отключены. Это делает любые тайминги для отладочных сборников (скомпилированных без какого-либо варианта на '-O') совершенно бессмысленным. – Crashworks