Analisis Komparatif Performa Go, Bun, dan PHP dalam Menangani HTTP Request Data Besar dari Database MySQL
Abstract
Penelitian ini menyajikan analisis komparatif performa tiga runtime backend Go, Bun, dan PHP dalam menangani HTTP request dengan beban data besar dari database MySQL. Pengujian dilakukan menggunakan Grafana k6 dengan skenario ramp up hingga 250–300 virtual users (VU) selama 6–7 menit, di deploy pada platform Railway.app dengan spesifikasi 8 vCPU dan 8 GB RAM. Tiga skenario diuji: (1) query 10.000 baris × 40 field dengan 250 VU, (2) query 5.000 baris × 40 field dengan 250 VU, dan (3) query 1.000 baris × 50 field dengan 300 VU. Hasil menunjukkan bahwa Go secara konsisten unggul di seluruh skenario dengan throughput tertinggi mencapai 19,3 req/s pada skenario 10.000 baris dan konsumsi memori yang efisien (43–155 MB). Bun berada di posisi kedua dengan throughput 2,1–3,04 req/s namun mengalami konsumsi memori tertinggi (116–425 MB) akibat double allocation pada proses JSON.stringify(). PHP menunjukkan throughput terendah (3,5–4,8 req/s) dengan error rate yang sangat tinggi (81,4–99,9%) akibat keterbatasan arsitektur PHP-FPM yang sinkronus dalam menangani concurrent requests. Root cause analysis mengidentifikasi bahwa streaming JSON encoder Go, model goroutine yang ringan, dan garbage collector yang prediktabel menjadi faktor utama keunggulan performa Go. Temuan penelitian memberikan panduan empiris bagi pengembang dalam memilih runtime yang sesuai berdasarkan karakteristik beban data dan tingkat konkurensi yang dibutuhkan
Downloads
References
Codesoltech. (2024). PHP 8.x performance benchmarks: JIT, OPcache, and real-world speed gains explained. https://www.codesoltech.com/blog/php-8-x-performance-benchmarks/
Donovan, A. A. A., & Kernighan, B. W. (2016). The Go programming language. Addison-Wesley Professional.
Go Documentation. (2024). encoding/json — Package json. The Go Programming Language. https://pkg.go.dev/encoding/json
Grafana Labs. (2024). Grafana k6 documentation: Load testing for engineering teams. https://k6.io/docs/
Ismail, I., Nusri, A. Z., & Rahman, S. (2023). Sistem smart trash pemilah sampah organik dan anorganik berbasis Internet of Things. Jurnal Saintekom, 13(2), 193-201.
Kamarudin, Prasetyo, R. D., & Fitriani, A. R. (2024). Laporan benchmark Go vs Bun vs PHP — Perbandingan performa request data [Laporan teknis internal]. Universitas Handayani Makassar.
Lemire, D. (2023). Web server 'hello world' benchmark: Go vs Node.js vs Nim vs Bun. Daniel Lemire's Blog. https://lemire.me/blog/2023/10/07/web-server-hello-world-benchmark-go-vs-node-js-vs-nim-vs-bun/
Railway.app. (2024). Railway infrastructure documentation: Deployment, metrics, and scaling. https://docs.railway.app/
Sumner, J. (2023). Bun 1.0. Bun Blog. https://bun.sh/blog/bun-v1.0
Tatroe, K., MacIntyre, P., & Lerdorf, R. (2020). Programming PHP: Creating dynamic web pages (4th ed.). O'Reilly Media.
TechEmpower. (2024). TechEmpower web framework benchmarks — Round 23. TechEmpower Inc. https://www.techempower.com/benchmarks/#section=data-r23
W3Techs. (2024). Usage statistics of server-side programming languages for websites. https://w3techs.com/technologies/overview/programming_language
WWT. (2023). Performance benchmarking: Bun vs. C# vs. Go vs. Node.js vs. Python. World Wide Technology. https://www.wwt.com/blog/performance-benchmarking-bun-vs-c-vs-go-vs-nodejs-vs-python
JISTI













