28 poin oleh xguru 2022-11-28 | 14 komentar | Bagikan ke WhatsApp
  • Dua pertanyaan yang sering diajukan saat wawancara
    • Coba tulis program untuk menghitung jumlah kata dalam file teks
    • Menurut Anda, bagian mana yang menjadi bottleneck performa program ini?
  • Orang sering menjawab "membaca dari file", tetapi sekarang hal itu tidak lagi benar
  • Memang dulu seperti itu 10–20 tahun lalu, tetapi pada 2022 membaca secara sekuensial dari disk sudah sangat cepat (penulis juga tidak menyadarinya sebelum mengujinya sendiri)
  • Bagian yang menjadi bottleneck adalah memproses/mem-parse input lalu mengalokasikannya ke memori: memecah menjadi kata, mengubah ke huruf kecil, menghitung frekuensi dengan hash table, dan sebagainya
  • Saat diuji dengan file teks 413MB dalam Python/Go (file yang berisi King James Bible yang digabung 100 kali)
    • Membacanya hanya memerlukan 0,1–0,2 detik, sedangkan pemrosesannya memakan waktu antara 7 hingga 2 detik
  • Kesimpulannya, saat memproses "big data", disk I/O belum tentu menjadi bottleneck

14 komentar

 
is9117 2022-12-01

Meski sama-sama akses sequential, tetap ada faktor seperti perbedaan antar bahasa, cara penggunaan pipeline I/O di tiap library, atau frekuensi permintaan API I/O oleh developer yang bisa memengaruhi hasilnya, jadi menurut saya klaim bahwa I/O bukan lagi bottleneck memerlukan prasyarat tertentu.

 
yuriwin 2022-11-30

Network I/O itu bukan I/O? wkwkwk

 
yuriwin 2022-11-30

Secepat apa pun, I/O tetaplah I/O; itulah alasan mengapa dalam pemrograman ada solusi tersendiri khusus untuk bagian I/O.

 
love7peace 2022-11-29

Semua disk big data pakai NVMe SSD? Wkwkwk, itu harganya jadi berapa...

 
loblue 2022-11-28

Sebagai orang yang sangat menderita karena disk I/O dan harus mengerjakan hal-hal agar platter bergerak sesedikit mungkin, ini cerita yang terasa menarik.
Di isi tulisannya ada pembahasan tentang "sequential".
Kalau sama sekali tidak melakukan seek, mungkin ini bukan cerita yang salah.

 
deokim 2022-11-28

Ini adalah eksperimen dengan premis yang keliru.

 
roxie 2022-11-29

Mohon penjelasan tambahan.

 
deokim 2022-12-05

Bottleneck itu sendiri adalah konsep yang berkaitan dengan waktu yang relatif.
Membandingkan kecepatan CPU dengan I/O adalah hal yang tepat.
Hanya karena I/O menjadi lebih cepat dibanding masa lalu, bukan berarti I/O bisa lebih cepat daripada CPU.

 
deokim 2022-12-05

Bisa jadi menggunakan mmap untuk hanya memuatnya ke memori virtual, sementara pembacaan sebenarnya dilakukan setiap kali CPU melakukan komputasi.
Komunikasi antara CPU dan semua memori (register, memori utama, disk) juga semuanya adalah I/O.
https://stackoverflow.com/questions/5877797/how-does-mmap-work

 
park2348190 2022-11-28

Jadi penasaran apa tolok ukur yang akan menentukan big data.

 
nicewook 2022-11-28

Menarik.

 
jungmin1237 2022-11-28

Hari ini saya menambah satu pengetahuan lagi.

 
xguru 2022-11-28

URL pada komentar pertama di https://news.ycombinator.com/item?id=33751266 juga menarik.
Napkin Math (matematika sederhana)
Katanya, I/O sekuensial kini hampir mendekati kecepatan memori..

 
nicewook 2022-11-28

Istilah napkin math ini namanya terlalu menarik.
Katanya saat membuat UTF-8, Rob Pike sempat mencoret-coret di atas serbet untuk menjelaskannya.