12 poin oleh sftblw 2024-08-19 | 9 komentar | Bagikan ke WhatsApp

Misskey (GeekNews) adalah program server mikroblog yang mendukung federasi ActivityPub. Misskey terutama dikembangkan di Jepang, dan merupakan platform yang banyak dicari pengguna yang mencari keseruan karena memiliki banyak fitur menarik seperti reaksi emoji, MFM sebagai markup bawaannya, pelacakan kata kunci (antena), menghias profil, membuat halaman interaktif menggunakan AiScript sebagai bahasa skrip bawaannya, minigame, dan lain-lain.

Sejauh yang saya tahu, stack teknologi Misskey adalah sebagai berikut. (Bisa jadi ada yang keliru.)

  • NodeJS, TypeScript
  • Koa.js, PostgreSQL, Redis
  • Vue

Dalam tulisan ini, maintainer Misskey, syuilo, memverifikasi performa Bun dibandingkan NodeJS menggunakan source code Misskey.

  • Tujuan pengujian adalah menguji apakah menjalankan source code yang ada apa adanya di Bun akan membuatnya lebih cepat. Tulisan tersebut menjelaskan bahwa tidak dilakukan optimasi khusus untuk Bun, dan pengujian tidak dilakukan pada kode yang tidak kompatibel bila penanganannya rumit.
  • Ada catatan bahwa hasil ini sebaiknya dipandang hanya sebagai satu studi kasus.
  • Pengujian dilakukan di Ubuntu, tetapi disebutkan bahwa di Windows pun hampir tidak ada perbedaan.

Kesimpulannya, dalam kasus ini justru penurunan performa di Bun yang lebih dominan. Menjalankan codebase besar yang sudah ada di Bun tidak bisa dikatakan akan menjadi lebih cepat secara ajaib... sepertinya itulah kesimpulannya. Ringkasan oleh ChatGPT adalah sebagai berikut.

  • Penggunaan memori: Node sekitar 200MB, Bun sekitar 800MB, sehingga Bun mengonsumsi memori jauh lebih banyak.
  • Kecepatan eksekusi: Dalam berbagai proses seperti pengambilan timeline, Node mencatat hasil yang lebih cepat. Khususnya saat membuat postingan, Node membutuhkan 5 detik, Bun 10 detik, sehingga Node 2 kali lebih cepat.
  • AiScript: Untuk eksekusi kode JavaScript murni, Node (mesin V8) sekitar 1,5 kali lebih cepat.

Tulisan tersebut memuat benchmark eksekusi untuk tiap bagian codebase, tetapi selain eksekusi satu kali pada WebSocket, semuanya menunjukkan bahwa NodeJS lebih cepat, baik dengan selisih tipis maupun besar. Bahkan untuk eksekusi WebSocket pun, saat dijalankan 100 ribu kali, NodeJS menunjukkan hasil yang sedikit lebih cepat.

Namun, penulis artikel syuilo masih menaruh harapan pada potensi perkembangan Bun, dan juga menyebutkan kemungkinan peningkatan performa melalui optimasi tambahan.

9 komentar

 
nxhtk 2024-08-19

Untuk kasus yang hanya mengganti lalu menjalankannya begitu saja, ada juga kasus yang optimisasinya masih kurang, seperti library terkait node:crypto atau zlib, sebagaimana juga disebutkan di dokumentasi dan issue Bun.

Kalau pada contoh itu sampai melambat dari 5 detik menjadi 10 detik, saya rasa kemungkinan besar karena bagian seperti ini. Saya sendiri juga pernah mengalami jadi beberapa kali lebih lambat pada library terkait JWT karena masalah semacam ini, sehingga akhirnya harus mengganti library dan mengoptimalkannya.

 
savvykang 2024-08-19

Saya penasaran dari mana Anda mendapatkan tulisan blog teknis berbahasa Jepang. Rasanya tersusun dengan baik dan berisi poin-poin penting.

 
tribela 2024-08-20

Saya tidak tahu soal tulisan lain, tetapi karena tulisan ini diunggah ke Misskey, saya bisa menerimanya lewat fediverse (saya juga pertama kali melihatnya di sana sebelum melihatnya diposting di sini).

 
bus710 2024-08-20

Saya tidak tahu pasti sumber artikel ini, tetapi tampaknya banyak tulisan bagus yang diunggah di Qiita.
Ada beberapa orang di berbagai kanal yang menerjemahkan dan membagikan tulisan yang dianalisis dari sudut pandang berbeda dibanding blog berbahasa Inggris atau Korea, dan umumnya mereka punya kesamaan bahwa artikel yang diterjemahkan berasal dari Qiita.

 
savvykang 2024-08-21

Saya juga bisa menemukan zenn karena pelengkapan otomatis Google Search merekomendasikan kata pencarian yang membandingkan Kita dan zenn. Terima kasih atas informasinya.

 
uyeong21c 2024-08-20

Qiita dibaca sebagai Kīta.

 
bus710 2024-08-20

Ah begitu ya, malu jadinya

 
tsboard 2024-08-19

Hasilnya sangat menarik. Dalam kasus Bun, ElysiaJS sering direkomendasikan sebagai web framework, tetapi ada masalah bahwa jika tidak menggunakan API teroptimasi yang disediakan Bun, performanya justru menurun. Tertulis bahwa mereka menggunakan Koa.js, jadi diperkirakan performanya banyak turun di sisi itu.

 
cometkim 2024-08-19

Kita perlu membedakan antara runtime dan perbedaan integrasi sistem.

Performa yang dibanggakan Bun secara umum berasal dari karakteristik JSC, beberapa optimasi integrasi sistem (atau pengurangan fitur), serta pemilihan library dasar yang baik.

Karena itu, pada benchmark skala kecil Bun cenderung menang, tetapi pada benchmark skala besar atau berjalan lama, ada kecenderungan Bun tertinggal dari Node.js.