Cara terbaik menambahkan string ke variabel string adalah dengan menggunakan +
atau +=
. Ini karena mudah dibaca dan cepat. Mereka juga sama cepatnya, yang mana yang Anda pilih adalah masalah selera, yang terakhir adalah yang paling umum. Berikut adalah pengaturan waktu dengan timeit
modul:
a = a + b:
0.11338996887207031
a += b:
0.11040496826171875
Namun, mereka yang merekomendasikan memiliki daftar dan menambahkannya kemudian bergabung dengan daftar itu, melakukannya karena menambahkan string ke daftar mungkin sangat cepat dibandingkan dengan memperpanjang string. Dan ini bisa benar, dalam beberapa kasus. Di sini, misalnya, adalah satu juta penambahan string satu karakter, pertama ke string, lalu ke daftar:
a += b:
0.10780501365661621
a.append(b):
0.1123361587524414
OK, ternyata bahkan ketika string yang dihasilkan adalah sejuta karakter, menambahkan masih lebih cepat.
Sekarang mari kita coba dengan menambahkan string panjang karakter seribu seratus ribu kali:
a += b:
0.41823482513427734
a.append(b):
0.010656118392944336
Oleh karena itu, string akhir memiliki panjang sekitar 100MB. Itu sangat lambat, menambahkan daftar jauh lebih cepat. Bahwa waktu itu tidak termasuk final a.join()
. Jadi berapa lama?
a.join(a):
0.43739795684814453
Oups Ternyata bahkan dalam kasus ini, tambahkan / gabung lebih lambat.
Jadi dari mana datangnya rekomendasi ini? Python 2?
a += b:
0.165287017822
a.append(b):
0.0132720470428
a.join(a):
0.114929914474
Nah, tambahkan / gabungkan sedikit lebih cepat di sana jika Anda menggunakan string yang sangat panjang (yang biasanya tidak Anda miliki, apa yang akan Anda miliki string yang 100 MB dalam memori?)
Tetapi penentu nyata adalah Python 2.3. Di mana saya bahkan tidak akan menunjukkan waktu kepada Anda, karena itu sangat lambat sehingga belum selesai. Tes-tes ini tiba-tiba memakan waktu beberapa menit . Kecuali untuk append / join, yang sama cepatnya dengan Python berikutnya.
Ya. Rangkaian string sangat lambat di Python kembali di zaman batu. Tetapi pada 2.4 itu tidak lagi (atau setidaknya Python 2.4.7), jadi rekomendasi untuk menggunakan append / join menjadi usang pada 2008, ketika Python 2.3 berhenti diperbarui, dan Anda seharusnya berhenti menggunakannya. :-)
(Pembaruan: Ternyata ketika saya melakukan pengujian lebih hati-hati yang menggunakan +
dan +=
lebih cepat untuk dua string pada Python 2.3 juga. Rekomendasi untuk menggunakan ''.join()
harus kesalahpahaman)
Namun, ini adalah CPython. Implementasi lain mungkin memiliki masalah lain. Dan ini hanyalah alasan lain mengapa optimasi prematur adalah akar dari semua kejahatan. Jangan gunakan teknik yang seharusnya "lebih cepat" kecuali Anda mengukurnya terlebih dahulu.
Oleh karena itu versi "terbaik" untuk melakukan penggabungan string adalah dengan menggunakan + atau + = . Dan jika itu ternyata lambat bagi Anda, yang sangat tidak mungkin, maka lakukan sesuatu yang lain.
Jadi mengapa saya menggunakan banyak append / join di kode saya? Karena terkadang itu sebenarnya lebih jelas. Terutama ketika apa pun yang Anda harus menyatukan bersama harus dipisahkan oleh spasi atau koma atau baris baru.