Temp değişkenleri programı yavaşlatır mı?
Aşağıdaki C kodu var:
int i = 5;
int j = 10;
int result = i j;
Eğer bu birçok kez döngü içinde ben olsaydım, int result = 5 10 kullanmak daha hızlı olur? Eğer iki değişken bazı dizi endeksleri hesaplamak için biraz uzun bir ifade kullanılarak elde edilmiş ise genellikle benim kod daha okunabilir hale getirmek için geçici değişkenler, örneğin oluşturmak. Bu kötü performans-bilge C? Diğer diller ne olacak?
CEVAP
Modern bir optimize derleyici gcc -std=c99 -O3 bayraklar kullanarak godbolt aşağıdaki örnek kullanmak istersek bu değişkenleri uzakta, örneğin optimize olacaktırsee it live):
#include <stdio.h>
void func()
{
int i = 5;
int j = 10;
int result = i j;
printf( "%d\n", result ) ;
}
aşağıdaki Meclisi neden olur:
movl $15, %esi
i j, hesaplanmasında bu constant propagation şeklidir.
Not, bir yan etkisi var o kadar printf ekledim, aksi takdirde func için optimize olması gerek
func:
rep ret
Bu iyileştirmeleri altında izin verilir-eğer kuralsadece derleyici bir program gözlemlenebilir davranışı taklit etmek için gerektirir., Bu taslak C99 standardı bölüm 5.1.2.3 kaplıdırProgramın çalışmasıdiyor ki:
Soyut makine, tüm ifadeleri tarafından belirtilen olarak değerlendirilir semantik. Gerçek bir uygulama bir parçası olarak değerlendirmek lazım değil ifade değeri kullanılmadığını anlamak olmadığını ve hiçbir gerekli yan etkileri üretilmektedir (herhangi bir arama nedeniyle de dahil olmak üzere işlev veya değişken bir nesne erişim).
Ayrıca Bkz: Optimizing C Code : Constant-Folding

Ben kullanan ve bu programı değişkenle...
Nasıl bir Perl programı için komut sat...
Nasıl Linux kabuk geçerli farklı bir ç...
Toplu iş dosyası değişkenleri çıkarmad...
Nasıl Android global değişkenleri bild...