Kode NumPy yang menghasilkan angka yang sama dapat berbeda jauh kecepatan dan konsumsi memorinya. Section ini membahas cara mengukur waktu eksekusi secara adil, memahami memory layout dan strides, serta dampak contiguous layout terhadap kecepatan akses. Kita juga membahas pemilihan dtype yang hemat memori, cara menghindari penyalinan tak perlu, dan menutup dengan batasan NumPy agar keputusan arsitektur tetap tepat.
Mengukur durasi kode NumPy secara adil dengan time.perf_counter dan timeit serta menjaga pengukuran tetap andal.
Buka → # Memahami Memory LayoutMengenal susunan data C-order dan F-order di memori serta pengaruhnya terhadap kecepatan operasi.
Buka → # Contiguous vs Non-contiguousMembedakan array contiguous dan non-contiguous lewat flags dan melihat dampaknya pada performa.
Buka → # Strides dan Memory AccessMembaca atribut strides untuk memahami cara NumPy melangkah di memori saat mengakses elemen.
Buka → # Mengurangi Penggunaan MemoriMenekan konsumsi memori array lewat pemilihan dtype, operasi in-place, dan penghapusan data tak terpakai.
Buka → # Memilih dtype yang EfisienMenghemat memori dan waktu dengan dtype yang tepat: int32 vs int64, float32 vs float64, dan trade-off presisinya.
Buka → # Menghindari Copy ArrayMengenali operasi yang menyalin data dan menerapkan kebiasaan view serta out untuk menghemat pekerjaan.
Buka → # Vectorization vs LoopMengukur selisih performa loop dan vectorization pada berbagai ukuran data untuk menentukan kapan vektorisasi menguntungkan.
Buka → # Optimasi Operasi ArrayMerangkai pola optimasi praktis: kurangi array sementara, manfaatkan out, gabungkan operasi, dan ukur ulang.
Buka → # Kapan NumPy Bukan Pilihan TerbaikMengenali situasi ketika NumPy kurang pas: data lebih kecil dari biaya overhead, data sangat besar, atau struktur tak beraturan.
Buka → # BLAS Threading dan Lingkungan EksekusiMemahami peran BLAS di balik operasi matriks, mengontrol thread dengan variabel lingkungan, dan menghindari oversubscription.
Buka →