Ana Sayfa

JavaScript'te 'for-of' Döngüleri Düşünüldüğü Kadar Yavaş Değil

1 dk okuma

Geleneksel olarak, JavaScript geliştiricileri for...of döngülerinin, diziler üzerinde iterasyon yaparken klasik indeksli for döngülerine kıyasla önemli ölçüde daha yavaş olduğuna inanır. Bu inanç, for-of döngülerinin iterasyon protokolüne dayanması ve her eleman için { value: ..., done: ... } gibi bir nesne döndürmesinin getirdiği ek yükten kaynaklanmaktadır. Ancak, modern JavaScript motorlarının sürekli gelişen optimizasyon yetenekleri göz önüne alındığında, bu yaygın kanının güncelliğini yitirmiş olabileceği düşünülmektedir. Makale, bu varsayımı test etmek amacıyla kapsamlı bir performans karşılaştırması yapmıştır.

Benchmark testleri, Chrome 143 tarayıcısında, Windows 11 işletim sisteminde ve AMD Ryzen 5000U işlemcili bir sistemde jsbenchmark.com kullanılarak gerçekleştirilmiştir. Testin temel amacı, farklı dizi türleri ve boyutları üzerinde çeşitli döngü mekanizmalarının performansını ölçmektir. Beş farklı dizi türü (tam sayılar, ondalık sayılar, dizeler, nesneler ve karışık değerler) ve üç farklı dizi boyutu (5.000, 50.000 ve 500.000 eleman) kullanılmıştır. Karşılaştırmada altı farklı döngü tipi incelenmiştir: klasik for döngüsü (i++), önbelleğe alınmış dizi uzunluğuna sahip klasik for döngüsü, tersten çalışan klasik for döngüsü (i--), for-of döngüsü, for-in döngüsü ve forEach metodu. Her döngüde, V8 motorunun aşırı optimizasyon yapmasını engellemek için her dizi elemanı üzerinde DATA.doSomethingWithValue() adında boş bir fonksiyon çağrılmıştır. Bu detaylı testler, for-of döngülerinin güncel motorlardaki gerçek performansını ortaya koymayı hedeflemektedir.

İçgörü

Modern JavaScript motorlarının optimizasyonları sayesinde `for-of` döngülerinin performansının yaygın inanışın aksine oldukça iyi seviyede olduğunu gösteriyor.

Kaynak