Z bloga Eric Lipperta The truth about value types wynika, że liczba rejestrów może mieć duży wpływ na wydajność kodu. Jakie są kryteria kodu, który najbardziej korzysta z wyższej liczby rejestrów w systemach x64? Czy są jakieś dobre przykłady?Które scenariusze maksymalizują wpływ wydajności wyższego rejestru w systemie x64 dla kodu C#?
Jest dla mnie jasne, że liczba rejestrów nie jest jedynym, a nawet najważniejszym aspektem platformy x64, ale jeśli istnieją takie kryteria, to czy platforma, na której planujemy uruchomić nasz kod, ma wpływ w jaki sposób piszemy nasz kod?
Dla mnie zawsze powinieneś rozważyć aspekt wydajności. Nie jestem pewien, czy możemy maksymalnie zwiększyć wydajność przy pomocy rejestru, ponieważ używamy wirtualnej maszyny .net. Myślę, że to zależy od implementacji maszyny wirtualnej. – ykatchou
To dobre pytanie, wierzę, że jeśli zbudujemy dla AnyCPU, kod IL zostanie skompilowany w czasie wykonywania w sposób zależny od platformy wykonawczej. –
Nawet nowoczesne procesory mają tylko około 16 rejestrów na rdzeń, co jest naprawdę niską wartością, gdy porównasz ją z liczbą zmiennych przydzielonych przez aplikacje w dzisiejszych czasach. Dlatego uważam, że nie będziecie w stanie "zoptymalizować" kodu C#, aby skorzystać z kilku dodatkowych rejestrów dostępnych w systemach x64. Co więcej, nawet jeśli powinieneś zwracać uwagę na wydajność podczas kodowania, powinieneś bardziej dbać o jakość kodu (czytelność, łatwość obsługi itd.), Ponieważ może to znacznie obniżyć koszty programowania, a jedynie cel w zakresie wydajności w krytycznych obszarach aplikacji . –