Pengaturcara Python selalunya melihat jurang prestasi yang ketara antara pemahaman senarai dan ditambahkan pada senarai. Walaupun pemahaman senarai lazimnya dianggap sebagai kemudahan sintaksis, ia menunjukkan kepantasan yang lebih tinggi yang menjangkau lebih daripada ekspresif semata-mata.
Untuk menggambarkan fenomena ini, pertimbangkan ukuran masa berikut:
>>> import timeit >>> timeit.timeit(stmt=''' t = [] for i in range(10000): t.append(i)''', number=10000) 9.467898777974142 >>> timeit.timeit(stmt='t= [i for i in range(10000)]', number=10000) 4.1138417314859
Seperti yang terbukti daripada ukuran, pemahaman senarai adalah hampir 50% lebih cepat daripada menambahkan. Mari kita mendalami sebab asas.
Pemahaman senarai bukan gula sintaksis semata-mata untuk gelung biasa. Mereka mengelakkan overhed yang dikaitkan dengan mengakses dan menggunakan atribut tambah dalam setiap lelaran. Ini menghapuskan penggantungan dan penyambungan semula bingkai berbilang fungsi, yang sememangnya lebih perlahan daripada membina senarai secara terus.
Memeriksa kod bait yang dibongkar untuk kedua-dua pendekatan memberi penerangan tentang perbezaan prestasi mereka:
# Appending to a List 18 LOAD_FAST 0 (l) 20 LOAD_METHOD 1 (append) 22 LOAD_FAST 1 (i) 24 CALL_METHOD 1 26 POP_TOP # List Comprehension 2 BUILD_LIST 0 8 LOAD_FAST 1 (i) 10 LIST_APPEND 2
Invokasi kaedah tambah dalam fungsi pertama dikenakan overhed tambahan, manakala pemahaman senarai terus memanjangkan senarai yang baru dibuat.
Dalam senario di mana prestasi adalah yang terpenting , pemahaman senarai harus menjadi pendekatan yang diutamakan daripada menambahkan senarai. Kelajuan unggul mereka berpunca daripada keupayaan mereka untuk memintas kod bait luar dan fungsi panggilan di atas kepala.
Atas ialah kandungan terperinci Mengapa Pemahaman Senarai Python Jauh Lebih Cepat Daripada Melampirkan Senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!