Kenapa Kamu Harus Pakai [ ], bukan list() – Python

Facebook
Twitter
LinkedIn

Selain, tuple, dictionary dan set, List merupakan salah satu dari 4 tipe data collection di bahasa pemograman Python. List merupakan tipe data mutable yang berarti isinya bisa kita ubah. Ada dua cara untuk menginisialisasi list yaitu menggunakan square bracket [] dan fungsi list().

Dari dua cara menginisialisasi sebuah list, adakah perbedaan diantara keduanya? Jika ada, apakah ada kelebihan dan kekurangan dari kedua cara insialisasi list tersebut?

Bahasa python
Python – Chris Ried Unsplash
Mari kita bedah !

Jumlah memori yang digunakan

Setiap kita menginisalisasi sebuah variabel atau fungsi, kita akan mengalokasikan sejumlah memori untuk menciptakan variabel dan fungsi tersebut. Termasuk didalamnya ketika kita menginisialisasi sebuah variabel yang berisi list. Disini kita akan mencoba menggunakkan modul sys untuk menghitung jumlah memori yang digunakan untuk membuat list.

# impor modul sys
import sys

# inisialisasi list
list_1 = list()
list_2 = []

# hitung memori yang digunakan
print(sys.getsizeof(list_1))
print(sys.getsizeof(list_2))

Hasil dari pengecekan memori diatas adalah sebagai berikut:

memori untuk list_1 : 56
memori untuk list_2 : 56

Ternyata memori yang digunakan adalah sama untuk masing – masing metode insialisasi list karnena memang keduanya sama – sama mengembalikan sebuah list kosong.

Kecepatan eksekusi

Memperhatikan kecepatan eksekusi sangat penting untuk memastikan sebuah script berjalan mulus tanpa hambatan. Semua orang tentunya menginginkan aplikasi yang digunakan berjalan cepat.

Kita akan menguji kecepatan eksekusi dengan modul timeit. Modul timeit digunakan untuk mengetahui waktu eksekusi sebuah script python.

# import modul timeit
import timeit

# lakukan ekseskusi sejumlah 10000 kali
print(timeit.timeit('x=list()',number=10000))
print(timeit.timeit('x=[]',number=10000))

Setelah pengujian waktu eksekusi, ternyata dua metode inisialisasi list memiliki waktu yang berbeda!

waktu untuk list() :  0.001412599999999986
waktu untuk [] :  0.0007339999999999014

Jika dilihat dari hasilnya, penggunaan [] untuk insialisasi list memiliki kecepatan sekitar 51% lebih cepat dibanding penggunaan fungsi list(). Ini berarti [] lebih efisien dalam segi waktu eksekusi.

Untuk kali ini, [] = 1, list() = 0 😁

Jumlah instruksi pada bytecode

Sama seperti bahasa pemograman interpreted, python source code akan dikompilasi ke dalam bentuk urutan instruksi yang disebut bytecode. Bytecode ini disimpan (dicachekan) dalam file .pyc. Itulah kenapa kamu menemukan folder __pycache__ di dalam direktori proyek python-mu yang sudah pernah dijalankan.

Sama seperti sintaks lainya, inisisalisasi list juga akan dikompilasi ke dalam bentuk bytecode. Kita bisa mengetahui bytecode yang dikompilasi dengan menggunakan disasembler. Python menyediakan disasembler dalam modul bernama dis.

# impor modul dis
from dis import dis

print(dis("[]"))
print(dis("list()"))

Script diatas akan menghasilkan instruksi apa saja yang ada di dalam bytecode.

  1           0 BUILD_LIST               0
              2 RETURN_VALUE

  1           0 LOAD_NAME                0 (list)
              2 CALL_FUNCTION            0
              4 RETURN_VALUE

Mari kita bedah secara detail setiap bytecode dari hasil script diatas

ada dua bytecode untuk dis("[]") :

  1. BUILD_LIST : Membuat Python list
  2. RETURN_VALUE : Mengembalikan nilai dari list yang telah dibuat

Ini berarti interpreter Python telah mengetahui bahwa [] difungsikan untuk membuat list dan hanya akan membangun list lalu mengembalikan hasilnya.

Ada 3 bytecode untuk dis("list()")

  1. LOAD_NAME : Python interpreter akan mencoba untuk mencari object sama dengan “list”
  2. CALL_FUNCTION : Memanggil fungsi “list” untuk membangun list.
  3. RETURN_VALUE : Mengembalikan nilai dari list yang telah dibuat.

Ternyata interpreter python membutuhkan 1 langkah lebih banyak untuk membuat list dengan fungsi list() dibanding dengan menggunakan [].


Kesimpulan

Dalam artikel ini kita telah menguji penggunaan list() dan [] dalam mebuat sebuah list dari segi memori dan waktu eksekusi.

Dalam segi penggunaan memori, [] dan list() memiliki perbedaan dalam segi waktu eksekusi dimana list() membutuhkan sekitar 51% waktu lebih lama untuk dieksekusi.

Bagaimana pendapatmu?

Baca Juga – 4 Tempat Belajar Pemograman Gratis + Bersertifikat (2021)

Baca Juga:

Muhammad Fajar Estu
Muhammad Fajar Estu
Fajar adalah seorang fullstack programmer yang sekarang bekerja sebagai .NET programmer. Memiliki pengalaman selama 3+ tahun di bidang programming web, mobile, API hingga aplikasi computer vision. Sekarang Fajar menulis artikel tutorial dan berbagi seputar dunia perkuliahan IT.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *