Merhaba Bana bir şeyin "bir sonraki" değerini vermesi gereken bir işlevi optimize etme yolundayım. Şu ana kadar ne varFonksiyonu hızlandırmak için aritmetiğe dönüş döngü
int fun(int a){
const int k = ...;
for(;test_value(a++) != k;);
return a;
}
Bu değil derleyici if (benim algoritma aslında çalıştı ama şimdi sonradan ben döngü her değişiklikte dallanma için bir test yapar korkuyorum test etmek için hızlı ve kirli bir yol olduğunu olduğunu sahnelerin arkasında ele almak çok iyi?). Sınamayı yerine getirme şansının en fazla 1/5 ve en kötü durumların bir milyonda bir olması olasılığını söyleyelim, ancak bu test_value sadece bir saat döngüsü veya ikidir. CPU boru hatlarını daha iyi kullanmak için derleyicimin tüm dalları aritmetik ile ticaretine yardımcı olabilmem için sistematik bir yol var mı?
Bunun sadece test_value'nin ne olduğuna bağlı olacağını düşünmüyor musunuz? –
Bu, herhangi bir dallanma riski olmadan sadece birkaç döngü içinde yürütmesi gereken bir işlevdir. Muhtemelen modern makinelerde SSE talimatı olarak mevcuttur. – mathreadler