28 puan yazan xguru 2022-11-28 | 14 yorum | WhatsApp'ta paylaş
  • 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

 
is9117 2022-12-01

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.

 
yuriwin 2022-11-30

io'su io değil mi? hahaha

 
yuriwin 2022-11-30

Ne 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.

 
love7peace 2022-11-29

Tüm büyük veri disklerini NVMe SSD yapacaklar, öyle mi? haha Peki bunun maliyeti ne kadar...

 
loblue 2022-11-28

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.

 
deokim 2022-11-28

Bu, öncülü hatalı bir deneydir.

 
roxie 2022-11-29

Lütfen ek açıklama yapar mısınız?

 
deokim 2022-12-05

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.

 
deokim 2022-12-05

mmap kullanarak 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

 
park2348190 2022-11-28

Büyük veriyi ayırt etmenin ölçütünün ne olacağını merak ediyorum.

 
nicewook 2022-11-28

İlginç.

 
jungmin1237 2022-11-28

Bugün de bilgime bir yenisini ekliyorum.

 
xguru 2022-11-28

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..

 
nicewook 2022-11-28

"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.