Learn Rust Coding · Pelajaran

Pembandingan Kinerja dan Penyetelan Performa

Jelajahi alat dan teknik untuk melakukan pembandingan kode Rust, mengidentifikasi hambatan, dan mengoptimalkan performa semaksimal mungkin.

Pelajaran 3 dari 312 langkah

Pembandingan Kinerja dan Penyetelan Performa adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 3 pelajaran total.

Mengapa Mengoptimalkan Kode Rust?

Rust dikenal karena kinerjanya, tetapi bahkan dengan efisiensinya, selalu ada ruang untuk perbaikan. Mengoptimalkan berarti membuat kode Anda berjalan lebih cepat, menggunakan lebih sedikit memori, atau keduanya.

Hal ini penting untuk aplikasi seperti mesin gim, sistem tertanam, atau layanan web dengan volume tinggi, yang setiap milidetik dan byte sangat berarti.

Memahami Pembandingan Kinerja

Pembandingan kinerja adalah praktik mengukur kinerja kode Anda secara sistematis. Praktik ini membantu Anda memahami dengan tepat seberapa cepat bagian tertentu dari program Anda berjalan dalam berbagai kondisi.

  • Waktu Eksekusi: Durasi yang diperlukan suatu fungsi atau blok kode.
  • Penggunaan Memori: Jumlah RAM yang digunakan suatu tugas.
  • Throughput: Jumlah operasi yang dapat diselesaikan per detik.

Pembandingan kinerja menghilangkan perkiraan dari proses optimasi dengan menunjukkan hasil empiris.

Menemukan Hambatan Kinerja

Sebelum mengoptimalkan, Anda perlu mengetahui apa yang harus dioptimalkan. Artinya, Anda perlu mengidentifikasi "hambatan"—bagian kode yang menghabiskan waktu atau sumber daya paling banyak.

Alat seperti penganalisis kinerja, misalnya perf di Linux dan Instruments di macOS, dapat membantu memvisualisasikan bagian tempat program Anda menghabiskan waktunya. Pembandingan kinerja kemudian memberikan pengukuran yang tepat untuk bagian-bagian penting tersebut.

Memperkenalkan `Criterion.rs`

Untuk pembandingan kinerja yang kuat dan andal di Rust, crate Criterion.rs merupakan pilihan utama. Ini adalah pustaka yang kuat dan melakukan analisis statistik untuk memberikan hasil yang akurat dan konsisten.

Criterion.rs menangani eksekusi pemanasan, analisis statistik, dan bahkan membuat laporan HTML yang menarik untuk memudahkan visualisasi tren kinerja.

Menyiapkan `Criterion.rs`

Untuk menggunakan Criterion.rs, Anda harus terlebih dahulu menambahkannya sebagai dependensi pengembangan dalam Cargo.toml. Kemudian, buat file pembandingan baru.

Mari tambahkan criterion dan tentukan target pembandingan dalam Cargo.toml. Buat file baru seperti benches/my_benchmark.rs.

[package]
name = "performance_app"
version = "0.1.0"
edition = "2021"

[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }

[[bench]]
name = "my_benchmark"
harness = false # Crucial for Criterion.rs

Menulis Pembandingan Kinerja Pertama Anda

Sekarang, mari tulis pembandingan kinerja sederhana untuk fungsi yang menghitung faktorial suatu bilangan. Pembandingan ini akan mengukur waktu yang diperlukan untuk menghitung faktorial.

Simpan kode ini dalam benches/my_benchmark.rs. Ingatlah untuk mengimpor Criterion dan mendefinisikan fungsi pembandingan kinerja Anda.

use criterion::{black_box, criterion_group, criterion_main, Criterion};

fn factorial(n: u64) -> u64 {
    (1..=n).product()
}

fn bench_factorial(c: &mut Criterion) {
    c.bench_function("factorial 20", |b| b.iter(|| factorial(black_box(20))));
}

criterion_group!(benches, bench_factorial);
criterion_main!(benches);

Menjalankan dan Menafsirkan Pembandingan Kinerja

Untuk menjalankan pembandingan kinerja, cukup jalankan cargo bench di direktori proyek Anda. Criterion.rs akan melakukan beberapa iterasi dan analisis statistik.

Output akan menampilkan waktu eksekusi rata-rata, simpangan baku, dan interval kepercayaan. Jika Anda mengaktifkan html_reports, periksa folder target/criterion untuk grafik terperinci!

Optimasi: Efisiensi Algoritmik

Salah satu cara paling berdampak untuk mengoptimalkan program adalah memilih algoritma yang lebih baik. Algoritma dengan kompleksitas waktu yang lebih rendah (misalnya, O(n) alih-alih O(n^2)) dapat mempercepat kode Anda secara drastis untuk input yang lebih besar.

Selalu pertimbangkan efisiensi matematis yang mendasari pendekatan Anda sebelum melakukan pengoptimalan mikro pada detail-detail kecil.

Optimasi: Struktur Data

Pilihan struktur data dapat sangat memengaruhi kinerja. Struktur yang berbeda unggul dalam operasi yang berbeda:

  • Vec (larik dinamis): Akses acak cepat, penyisipan/penghapusan di bagian tengah lambat.
  • LinkedList: Penyisipan/penghapusan di mana saja cepat, akses acak lambat.
  • HashMap (tabel hash): Pencarian cepat (pada kasus rata-rata).

Pahami pola akses data Anda agar dapat memilih struktur yang paling sesuai.

Optimasi: Mengurangi Alokasi

Alokasi memori (terutama pada heap) dapat memerlukan biaya besar. Setiap alokasi melibatkan permintaan memori dari sistem operasi, yang membutuhkan waktu.

  • Stack vs. Heap: Jika memungkinkan, gunakan data yang dialokasikan pada stack (berukuran tetap).
  • Pra-alokasi: Gunakan Vec::with_capacity untuk menghindari realokasi.
  • Gunakan ulang: Menggunakan ulang struktur data yang sudah ada dapat lebih cepat daripada membuat struktur baru.

Meminimalkan alokasi dapat menghasilkan peningkatan kecepatan yang signifikan.

Kuis Tolok Ukur Kinerja

Mari uji pemahaman Anda tentang pembandingan kinerja dan penyetelan kinerja.

Rangkuman & Langkah Berikutnya

Anda telah mempelajari pentingnya pembandingan kinerja dan cara menggunakan Criterion.rs untuk mengukur kinerja kode Rust Anda. Kita juga telah membahas strategi pengoptimalan utama:

  • Mengidentifikasi hambatan kinerja dengan pembuatan profil.
  • Memilih algoritma yang efisien.
  • Memilih struktur data yang sesuai.
  • Meminimalkan alokasi memori.

Ingat, selalu lakukan pengukuran sebelum mengoptimalkan! Teruslah berlatih untuk membangun aplikasi Rust yang berkinerja tinggi.

Gratis untuk memulai

Belajar Rust dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
39
Pelajaran
144

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pembandingan Kinerja dan Penyetelan Performa” gratis?

Ya — teks lengkap “Pembandingan Kinerja dan Penyetelan Performa” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Pembandingan Kinerja dan Penyetelan Performa”?

Jelajahi alat dan teknik untuk melakukan pembandingan kode Rust, mengidentifikasi hambatan, dan mengoptimalkan performa semaksimal mungkin. Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?

Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Pembandingan Kinerja dan Penyetelan Performa” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?

Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Antarmuka Fungsi Asing (FFI)
  2. Rust ke WebAssembly (WASM)
  3. Pembandingan Kinerja dan Penyetelan Performa
← Kembali ke Learn Rust Coding