Menjadikan Python lebih cepat
Python adalah salah satu bahasa pemrograman paling populer di kalangan developer namun karena kecepatannya yang rendah maka banyak perusahaan menulis ulang aplikasi mereka dalam bahasa lain setelah kecepatan Python menjadi hambatan bagi pengguna. Tetapi bagaimana jika ada cara untuk mempertahankan fitur-fitur mengagumkan Python dan meningkatkan kecepatannya? Solusinya pada menggunakan pypy
PyPy adalah interpreter Python yang sangat compliance yang merupakan alternatif yang layak untuk CPython 2.7, 3.6, dan 3.7. Dengan menginstal dan menjalankan aplikasi via pypy maka kalian dapat memperoleh peningkatan kecepatan yang nyata. Seberapa besar peningkatan yang akan kalian lihat bergantung pada aplikasi yang jalankan.
Python and PyPy
Contents
Spesifikasi bahasa Python digunakan dalam sejumlah implementasi seperti CPython (ditulis dalam C), Jython (ditulis dalam Java), IronPython (ditulis untuk .NET), dan PyPy (ditulis dengan Python). CPython adalah implementasi asli dari Python dan sejauh ini yang paling populer dan paling terupdate.
Namun, karena CPython adalah bahasa interpretasi high level maka CPython memiliki batasan tertentu, di situlah PyPy bisa berguna. Karena mematuhi spesifikasi bahasa Python, PyPy tidak memerlukan perubahan dalam basis kode klaian dan dapat menawarkan peningkatan kecepatan yang signifikan berkat fitur yang akan kalian lihat di bawah.
Download dan Instalasi
PyPy tersedia untuk sistem operasi linux, mac, dan windows, kalian bisa download di https://www.pypy.org/download.html kalian tenang saja walaupun menggunakan OS windows 64 bit, maka PyPy akan tetap berjalan dengan baik koq, silahkan download dengan (saya pakai versi python 3.6) dan extract lah di C:/pypy3.6-v7.3.2-win32, jangan lupa untuk set path agar pypy dapat dikenali oleh sistem.
Untuk folder site-packages masih kosong, kalian bisa copy paste saja library yang kalian ingin gunakan disitu, ntar saya jelaskan.
Mencoba Kode Python tanpa PyPy
Untuk mempermudah benchmark, saya punya kode python yang simple untuk melakukan looping sebanyak 10ribu kali, saya beri nama dengan example.py
import time start_time = time.time() total = 0 for i in range(1, 10000): for j in range(1, 10000): total += i + j print(f"Hasil {total}") end_time = time.time() print(f"Selesai {end_time-start_time:.2f} detik")
Kita coba run
python example.py
Hasil 999800010000 Selesai 19.52 detik
Butuh waktu 19.52 detik
Mencoba Kode Python dengan PyPy
Dengan kode yang sama, kita akan coba pakai PyPy
pypy3 example.py
Hasilnya cukup cepat sekali!
Hasil 999800010000 Selesai 4.60 detik
Just-In-Time (JIT) Compiler
Sebelum membahas apa itu kompilasi JIT, mari kita mundur sejenak dan meninjau properti dari bahasa yang dikompilasi seperti C dan bahasa yang ditafsirkan seperti JavaScript.
Bahasa pemrograman yang dikompilasi lebih berkinerja tetapi lebih sulit untuk ditransfer ke arsitektur CPU dan sistem operasi yang berbeda. Bahasa pemrograman yang ditafsirkan lebih portabel, tetapi kinerjanya jauh lebih buruk daripada bahasa yang dikompilasi. Ini adalah dua spektrum yang ekstrim.
Bagaimana dengan Kompatibilitas Package yang lain
Saya mencoba aplikasi yang membutuhkan library PyPDF2, langsung saya copy pastekan di site-packages
Bisa lancar jalannnya, hanya saja ada message old version
C:\pypy3.6-v7.3.2-win32\site-packages\PySimpleGUI\PySimpleGUI.py:17457: UserWarning: You are running a VERY old version of tkinter 8.5.2 warnings.warn('You are running a VERY old version of tkinter {}'.format(__tclversion_detailed__), UserWarning)