Penyimpanan tensorflow yang lebih efisien di Chrome

Pengoptimalan baru di Chrome meningkatkan cara data IndexedDB disimpan di disk. Peningkatan ini berfokus pada cara nilai besar dikelola dalam sistem penyimpanan Chrome, khususnya dengan memperkenalkan kompresi ke file tertentu yang disimpan di disk. Artikel ini meringkas poin-poin penting dari pembaruan ini.

Mekanisme penyimpanan Chrome sebelum versi 129

Chrome menggunakan LevelDB untuk menyimpan data IndexedDB di disk. LevelDB adalah library penyimpanan nilai kunci yang cepat, tetapi mengalami kesulitan saat setiap nilai melebihi ukuran halaman database. Untuk mengatasi hal ini, sejak 2017, Chrome telah menyimpan nilai yang lebih besar dari satu halaman sebagai file biasa di disk bersama file database.

Penyimpanan dari versi 129

Kompresi nilai besar

Tidak seperti konten yang disimpan langsung dalam database LevelDB, yang dikompresi sebelum ditulis ke disk dan didekompresi setelah dibaca, file besar yang disimpan sebagai file biasa tidak dikompresi. Dengan update baru ini, Chrome kini akan mengompresi file besar tersebut menggunakan library kompresi real-time Snappy, sehingga menghemat ruang penyimpanan secara signifikan. Hal ini sangat efektif untuk data terstruktur, seperti array besar nilai JavaScript, XML, atau JSON. Hal ini tidak efektif untuk file media yang besar tetapi sudah dikompresi, atau, yang lebih jarang, jika situs sudah melakukan kompresi dan ekstrak sendiri.

Dampak terhadap efisiensi penyimpanan

Jika kompresi mengurangi ukuran file menjadi di bawah ukuran halaman LevelDB, data akan dipindahkan kembali ke LevelDB. Perubahan ini tidak hanya menghemat ruang, tetapi juga mengurangi operasi I/O disk, sehingga meningkatkan performa secara keseluruhan.

Algoritma kompresi Snappy

Tim Chrome memilih Snappy untuk kompresi karena mengoptimalkan kecepatan, bukan kompresi maksimum. Proses ini cukup cepat sehingga tidak menimbulkan penalti performa yang dapat diukur selama kompresi atau dekompresi.

Peningkatan performa

Kompresi dan dekompresi ditangani dalam proses perender, bagian dari arsitektur multiproses Chrome. Hal ini mengurangi ukuran pesan yang dikirim ke proses browser, sehingga meningkatkan performa lebih lanjut. Benchmark sintetis telah menunjukkan bahwa update ini dapat membuat beberapa operasi dua hingga tiga kali lebih cepat dari sebelumnya karena IPC (Inter-Process Communication) dan I/O disk yang berkurang. Dalam praktiknya, dalam pengukuran tim Chrome, payload data terstruktur 1 MB dikirim dari disk ke halaman dalam waktu sekitar seperempat waktu (dengan variabilitas tinggi berdasarkan hardware perangkat dan aktivitas sistem).

Dampak terhadap developer dan pengguna

Perubahan ini sepenuhnya transparan bagi developer dan pengguna. Namun, pengguna mungkin akan melihat peningkatan performa dan pengurangan penggunaan penyimpanan.

  • Penghematan ruang: Kompresi hanya diterapkan pada data baru yang disimpan setelah update ini. Penghematan ruang dapat diamati secara tidak langsung menggunakan API web seperti navigator.storage.estimate() atau di bagian Penyimpanan di Chrome DevTools pada panel Aplikasi.
  • Menguji fitur: Developer dapat menguji perilaku ini di versi pra-rilis Chrome (pra-129) dengan mengaktifkan fitur tersebut dengan flag: --enable-features="IndexedDBCompressValuesWithSnappy".

Update ini meningkatkan efisiensi Chrome dalam mengelola nilai IndexedDB yang besar, sehingga menawarkan penghematan ruang dan waktu tanpa mengorbankan performa, yang menandai peningkatan signifikan dalam cara data disimpan dan diakses di browser. Dengan memahami perubahan ini, developer dapat memperoleh manfaat dari upaya berkelanjutan untuk mengoptimalkan performa dan mekanisme penyimpanan Chrome, sehingga memastikan pengalaman pengguna yang lebih lancar dan efisien.

Ucapan terima kasih

Dokumen ini ditinjau oleh Evan Stade dan Rachel Andrew.