Neden SEO bu işlev öldürür mü?
Biz son zamanlarda birçok dilde programlama özel hakkında Üniversitede bir ders vardı. Aşağıdaki işlevi yazdı:
inline u64 Swap_64(u64 x)
{
u64 tmp;
(*(u32*)&tmp) = Swap_32(*(((u32*)&x) 1));
(*(((u32*)&tmp) 1)) = Swap_32(*(u32*) &x);
return tmp;
}
Ben tamamen bu da okunabilirlik açısından çok kötü bir tarzı olduğunu anlamak olsa da, asıl mesele bu kod parçası optimizasyonu yüksek bir düzeyde etkin kadar iyi üretim kodu olarak çalıştı. Sonra kodu sadece bir şey yapmaz.
tmp
derleyici tarafından optimize edilmiş olacaktı değişkeni için tüm atamaları söyledi. Ama niçin böyle olacağını?
Değişkenleri ilan edilmesi için gereken şartlar olduğunu anlıyorumuçucuderleyici eğer hiç okuma veya yazılı olduğunu düşünüyorsa bile onlara dokunmaz ama bu burada olacağını neden bilmiyorum.
CEVAP
Argümanlar eğer işaret varsa diğer (char*
dışında) kabul edilir işaretçi C , temelde farklı türleri ("strict aliasing" kuralları). Bu bazı iyileştirmeler sağlar.
Burada, u64 tmp
u64
olarak değiştirilmiş.
u32*
içerik değiştirildiğinde, ama ilgisiz 'u64 tmp
' u64 tmp
nop
olarak görülebilir.
Neden Python kodunu daha hızlı bir işl...
Neden İfade<İşlev<T> kullanırs...
Neden herhangi bir parametre (asıl fon...
Bu Node.js ile ÇOĞALTMA) bir işlev çağ...
Neden İşlev<T,bool > Predicate< y...