Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Pemahaman Senarai Python Jauh Lebih Cepat Daripada Melampirkan Senarai?

Mengapa Pemahaman Senarai Python Jauh Lebih Cepat Daripada Melampirkan Senarai?

DDD
DDDasal
2024-11-01 12:54:29181semak imbas

 Why Are Python List Comprehensions So Much Faster Than Appending to Lists?

Mengapa Pemahaman Senarai Python Melebihi Senarai Menambah

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.

Kesilapan Gula Sintaksis

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.

Perbandingan Kod Byte

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.

Implikasi Praktikal

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn