Materi
Dua cara yang hasilnya sama persis bisa berbeda biaya sampai ribuan kali lipat. Memeriksa apakah sebuah kode ada di dalam list menelusuri isinya satu per satu, sehingga biayanya naik seiring panjang list. Memeriksa hal yang sama pada set atau pada kunci dict memakai nilai hash tiap anggota, sehingga jumlah langkahnya tidak ikut naik ketika anggotanya bertambah.
terlarang = ["A1", "B2", "C3"]
himpunan = set(terlarang)
"B2" in terlarang # menelusuri isi list satu per satu
"B2" in himpunan # mencari lewat nilai hash anggotanyaPerbedaan itu hanya terlihat pada data besar. Modul timeit dibuat untuk pengukuran semacam ini: ia menjalankan potongan kode berulang kali dan melaporkan waktunya, serta menghindari sejumlah jebakan pengukuran waktu yang umum terjadi. Ide yang sama muncul di basis data: dokumentasi perencana kueri SQLite membandingkan kueri yang membaca seluruh tabel dengan kueri yang memakai indeks, dan yang kedua dijawab dengan beberapa pencarian biner saja.
Contoh lain yang berbiaya berbeda pada data besar: menyatukan ribuan potongan teks dengan menambahkannya satu per satu ke teks yang sudah ada membuat teks lama disalin berkali-kali, sedangkan mengumpulkannya di list lalu menyatukannya sekali dengan join hanya menyalin satu kali.