HeadlinesBriefing HeadlinesBriefing.com

Hasil Benchmark Performa Python 3.15

Hacker News •
×

Oktober sekali lagi, berarti saat mencoba rilis Python baru (teknis, saya menggunakan rilis 3.15.0rc3, rilis resmi 3.15 masih beberapa hari lagi). Seperti yang saya lakukan dengan artikel performa Python 3.14 tahun lalu, hari ini saya berbagi pengalaman baru dari benchmark Python informal saya, membandingkan Python 3.15 dengan interpreter lama dari 3.10. Jika Anda tidak tertarik dengan grafik dan tabel dan hanya ingin membaca analisis saya, silakan lompat ke bagian kesimpulan di akhir.

Benchmark yang saya sebut "non-formal" artinya? Mengukur performa bahasa pemrograman secara objektif dan universal tidak mungkin. Yang bisa Anda lakukan hanyalah menulis beberapa program dan menjalankannya untuk mendapatkan ukuran performanya. Program lain mungkin menunjukkan karakteristik performa yang mirip, atau mungkin tidak, benar-benar tidak ada cara mengetahui.

Niat saya dengan benchmark ini hanya untuk merasakan perubahan performa di berbagai versi Python, tetapi ingin saya jelaskan bahwa saya tidak mencoba mendapatkan profil performa yang komprehensif dari interpreter Python. Untuk benchmark saya, saya akan menjalankan dua program bernama fibo.py dan bubble.py, yang bisa Anda inspeksi jika suka. Ini adalah program yang sama yang saya gunakan dalam edisi benchmark sebelumnya.

Pertama menghitung angka dari urutan Fibonacci, dan kedua mengurutkan angka menggunakan algoritma bubble sort. Saya memilih program ini sebagai representatif dari dua kelas algoritma. Perhitungan Fibonacci dilakukan menggunakan rekursi, yang saya temukan agak tidak efisien di interpreter Python.

Sisi lain, bubble sort hanya menggunakan for-loop, tanpa rekursi. Benchmark saya tidak mencoba mencakup jenis program lain. Khususnya, perhatikan bahwa saya tidak mencakup kode I/O terbatas dalam benchmark ini.

Karena beberapa peningkatan performa di versi Python terbaru berputar di sekitar multithreading, saya juga membuat variasi multithreading untuk setiap program, sehingga total saya memiliki empat uji berbeda. Lengkap matrix uji sebenarnya cukup kompleks, karena saya harus menjalankan empat variasi program di bawah semua versi Python, serta alternatif JIT dan free-threading untuk yang memiliki. Saya suka menjalankan test di Py Py juga, karena interpreter ini di running benchmark sebelumnya ini menunjukkan performa yang impresif.

Dan untuk menempatkan performa Python dalam ekosistem yang lebih luas, saya juga mentranslasikan dua program ini ke Java Script (Node.js) dan Rust. Ini adalah matrix uji lengkap yang saya kerjakan: 2 skrip uji: fibo.py: menghitung angka Fibonacci, dengan rekursi; bubble.py: mengurutkan daftar angka acak yang dihasilkan, tanpa rekursi. 2 mode threading: Single-threaded; 4 paralel thread. 6 versi Python, plus terbaru Py Py, Node.js dan Rust: CPython 3.10, 3.11, 3.12, 3.13, 3.14, 3.15; Py Py 3.12; Node 26.3; Rust 1.97. 3 Python interpreter: Standar; Just-In-Time (JIT): hanya untuk CPython 3.13+; Free-threading (FT): hanya untuk CPython 3.13+. Bacaan benchmark sebelumnya saya mungkiningat bahwa saya memiliki dimensi tambahan di matrix uji untuk Linux vs. mac OS.

Given bahwa dua benchmark sebelumnya tidak ada perbedaan signifikan di antara keduanya, saya memutuskan untuk membuang test mac OS kali ini, sehingga semua test dijalankan di Linux laptop saya yang menjalankan Gentoo Linux dan CPU Intel Core i5. Metode yang saya gunakan untuk mengukur performa setiap peserta benchmark ini adalah menjalankan test program tiga kali dan mengambil rata-rata durasi tiga. Di tabel hasil yang saya bagikan di bawah ini, saya juga menunjukkan perbedaan kecepatan versus versi 3.15, dan ketika itu masuk akal juga menunjukkan perbedaan kecepatan versus versi sebelumnya dari interpreter yang diberikan.

Untuk perbandingan kecepatan, saya menggunakan perbandingan sederhana, di mana 1x berarti kecepatan yang sama, 0.5x berarti setengah kecepatan (atau bahwa waktu yang dibutuhkan menjadi dua kali lipat)...

Sumber: Hacker News · Diringkas oleh HeadlinesBriefing