- Mülakatlarda sık sorulan 2 soru
- Bir metin dosyasındaki kelimeleri sayan bir program yazın
- Bu programın performans darboğazı hangi kısımda?
- İnsanlar sık sık "dosyadan okuma" yanıtını veriyor, ama artık durum böyle değil
- 10-20 yıl önce böyleydi, ancak 2022 itibarıyla diskten sıralı okuma çok hızlı (yazar da test etmeden önce bunu bilmiyormuş)
- Darboğaz, girdiyi işleyip/parse edip belleğe ayırma kısmı: kelimelere bölmek, küçük harfe çevirmek, hash tablosuyla frekans saymak gibi işlemler
- Python/Go ile 413MB'lık bir metin dosyası test edildiğinde (King James İncil'inin 100 kez art arda eklenmiş hali)
- Okuma 0.1~0.2 saniye sürerken, işleme 7 saniyeden 2 saniyeye kadar sürebiliyor
- Sonuç olarak, "büyük veri" işlerken disk I/O darboğaz olmayabilir
14 yorum
Ne kadar sıralı erişim olsa da, dilden dile ve kütüphaneden kütüphaneye I/O pipeline’ının kullanım biçimi ya da geliştiricinin I/O API istek sıklığı gibi etki eden unsurlar var; bu yüzden I/O’nun artık darboğaz olmadığını söylemenin bazı önkabullere dayanması gerektiğini düşünüyorum.
Ağ
io'suiodeğil mi? hahahaNe kadar hızlansa da I/O yine I/O’dur; programlama sırasında yalnızca I/O kısmı için ayrı çözümlerin bulunmasının nedeni de budur.
Tüm büyük veri disklerini NVMe SSD yapacaklar, öyle mi? haha Peki bunun maliyeti ne kadar...
Disk I/O yüzünden çok zorlanan ve platter’ların mümkün olduğunca az hareket etmesini gerektiren işlerle uğraşan biri olarak, bu bana ilginç bir hikâye gibi geliyor.
Yazıda “sequential” olduğundan bahsediliyor.
Hiç seek yapılmıyorsa, belki de tamamen yanlış bir şey değildir.
Bu, öncülü hatalı bir deneydir.
Lütfen ek açıklama yapar mısınız?
Darboğaz denen şeyin kendisi zaten göreli zamana dair bir meseledir.
Bunu CPU hızı ile I/O’yu karşılaştırarak değerlendirmek gerekir.
I/O geçmişe göre hızlanmış olsa da CPU’dan daha hızlı olamaz.
mmapkullanarak yalnızca sanal belleğe yüklemiş olabilir; gerçekte ise CPU her hesaplama yaptığında okuyor olabilir.CPU ile tüm bellekler (register, ana bellek, disk) arasındaki iletişim de tamamen I/O'dur.
https://stackoverflow.com/questions/5877797/how-does-mmap-work
Büyük veriyi ayırt etmenin ölçütünün ne olacağını merak ediyorum.
İlginç.
Bugün de bilgime bir yenisini ekliyorum.
https://news.ycombinator.com/item?id=33751266 adresindeki ilk yorumun URL’si ilginçmiş.
Napkin Math (basit matematikler)
Sıralı I/O’nun neredeyse bellek hızına yaklaştığı söyleniyor..
"Napkin math" adı kulağa gerçekten çok çekici geliyor.
UTF-8 yapılırken Rob Pike'ın bunu bir peçeteye karalayıp gösterdiği söyleniyordu galiba.