VLC video filtresinde C ve C# performansı karşılaştırıldı
Öne çıkanlar
- Doğrudan C# uyarlaması, derleyici optimizasyonu farkları nedeniyle C'ye göre yüzde 23 daha yavaş kaldı.
- Döngü sınırlarının düzenlenmesiyle iki dil arasındaki performans farkı yüzde 8'e geriledi.
- AVX2 destekli son testte C sürümü 240 fps, C# sürümü ise 236 fps değerine ulaştı.
VLC Media Player'ın yerel video filtreleri üzerinde gerçekleştirilen bir performans testinde C ve C# dilleri karşılaştırıldı. Test kapsamında VLC 4'ün Gauss bulanıklığı filtresi.NET Native AOT kullanılarak satır satır C# diline uyarlandı. Aynı video kareleri üzerinde ve 1080p çözünürlükte yürütülen ilk doğrudan karşılaştırmada C sürümü, C# uyarlamasından yüzde 23 daha hızlı sonuç verdi. Bu farkın çöp toplayıcıdan değil, Clang ve RyuJIT derleyicilerinin makine kodu üretme biçimindeki optimizasyon ayrılıklarından kaynaklandığı belirlendi.
Filtre algoritmalarının optimize edildiği ikinci aşamada bölme işlemleri çarpma ile değiştirildi, bellek erişimi sıralı hale getirildi ve sınır kontrolleri basitleştirildi. Herhangi bir SIMD veya çoklu iş parçacığı kullanılmayan bu ölçekleme adımında C# sürümü, mevcut VLC koduna kıyasla 2,5 kat hız artışı gösterdi. Döngü sınırlarının önceden hesaplanması ve uygun veri tiplerinin seçilmesi gibi küçük kod müdahaleleriyle iki dil arasındaki ham fark yüzde 8 seviyesine kadar geriledi.
Son aşamada tek çekirdekte AVX2 yönergeleri devreye alındı ve her iki dilin donanım hızlandırma yetenekleri sınırlarına kadar zorlandı. İnce ayarların ardından C# sürümü saniyede 236 kare hızına ulaşırken, C sürümü saniyede 240 kare işledi. Performans farkının yüzde 1 ila yüzde 9 aralığına indiği test sonucunda, CPU üzerinde yoğun piksel işleme gerektiren eklentiler için C# dilinin geçerli bir alternatif oluşturduğu kaydedildi.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.