Alat Pembuatan Profil
ruby-prof dan stackprof.
Alat Pembuatan Profil adalah pelajaran Ruby Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. 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 Ruby Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ruby Academy mencakup 4 pelajaran total.
Tolok Ukur vs Alat Pembuatan Profil
Tolok ukur memberi tahu Anda berapa lama sesuatu berlangsung. Alat pembuatan profil memberi tahu Anda di mana waktu digunakan di dalamnya.
- Alat pembuatan profil menguraikan waktu berdasarkan setiap metode atau baris
- Alat tersebut mengungkap bagian yang paling membebani dan tidak akan pernah Anda tebak
- Alat pembuatan profil Ruby yang populer: ruby-prof dan stackprof
# Profilers answer: which method consumed the most time?
puts 'Benchmark = how long, Profiler = where'Ikhtisar ruby-prof
ruby-prof adalah alat pembuatan profil berbasis instrumentasi yang mendetail. Alat ini terhubung ke setiap pemanggilan metode.
- Jumlah pemanggilan dan pengukuran waktu yang sangat tepat
- Beban tambahan lebih tinggi, jadi gunakan pada sampel yang mewakili
- Dipasang dengan
gem install ruby-prof
# Gemfile
gem 'ruby-prof'Membuat Profil Blok dengan ruby-prof
Bungkus kode dalam RubyProf.profile untuk menangkap hasil yang dapat Anda cetak.
- Mengembalikan objek hasil pembuatan profil
- Teruskan objek tersebut ke pencetak untuk menghasilkan keluaran
require 'ruby-prof'
result = RubyProf.profile do
1000.times { |i| (1..i).reduce(:+) }
end
RubyProf::FlatPrinter.new(result).print(STDOUT)Pencetak ruby-prof
ruby-prof menyediakan beberapa pencetak untuk tampilan yang berbeda.
FlatPrinteradalah daftar metode yang diurutkanGraphPrintermenunjukkan hubungan pemanggil dan yang dipanggilCallTreePrintermenghasilkan keluaran untuk KCachegrind
require 'ruby-prof'
result = RubyProf.profile { 100.times { 'x' * 1000 } }
RubyProf::GraphPrinter.new(result).print(STDOUT, min_percent: 1)Membaca Profil Datar
Profil datar mencantumkan metode berdasarkan waktu yang digunakan.
- Waktu %self yang dihabiskan dalam metode itu sendiri
- Waktu total termasuk metode yang dipanggil
- Jumlah calls menunjukkan berapa kali metode dipanggil
Fokuslah terlebih dahulu pada entri %self yang paling tinggi.
# Example flat output columns:
# %self total self wait child calls name
puts 'Optimize the top %self method first'Ikhtisar stackprof
stackprof adalah alat pembuatan profil berbasis pengambilan sampel. Alat ini merekam tumpukan pemanggilan secara berkala.
- Beban tambahan sangat rendah, sehingga aman untuk produksi
- Mengambil sampel berdasarkan CPU, waktu dinding, atau alokasi objek
- Dipasang dengan
gem install stackprof
# Gemfile
gem 'stackprof'Menjalankan stackprof
StackProf.run membuat profil suatu blok dan menulis hasilnya ke file.
mode:dapat berupa:cpu,:wall, atau:objectout:menetapkan jalur file dump
require 'stackprof'
StackProf.run(mode: :cpu, out: 'profile.dump') do
1_000_000.times { |i| Math.sqrt(i) }
endMemeriksa Hasil stackprof
Gunakan alat baris perintah stackprof untuk membaca dump.
stackprof profile.dump --textuntuk ringkasan--method Name#methuntuk menelusuri satu metode secara mendalam--flamegraphmenghasilkan data flamegraph
# Shell
# stackprof profile.dump --text
# stackprof profile.dump --method 'Array#sort'
puts 'Analyze the dump with the stackprof CLI'Pengambilan Sampel vs Instrumentasi
Kedua alat pembuatan profil tersebut menukar ketepatan dengan beban tambahan.
- ruby-prof menginstrumentasikan setiap pemanggilan: tepat tetapi lebih lambat
- stackprof mengambil sampel: perkiraan tetapi ringan
- Gunakan stackprof dalam produksi dan ruby-prof untuk analisis mendalam
modes = { 'ruby-prof' => 'instrumenting', 'stackprof' => 'sampling' }
modes.each { |tool, kind| puts "#{tool}: #{kind}" }Waktu Dinding vs Waktu CPU
Pilih mode pembuatan profil berdasarkan hambatan kinerja.
- Mode CPU menunjukkan kode yang banyak melakukan komputasi
- Mode dinding juga menangkap waktu tunggu I/O seperti jaringan atau disk
- Titik akhir yang lambat dengan panggilan DB memerlukan mode dinding
# I/O bound? use wall. CPU bound? use cpu.
bottleneck = 'database query'
mode = bottleneck.include?('query') ? :wall : :cpu
puts "Use mode: #{mode}"Alur Kerja Pembuatan Profil
Pembuatan profil yang efektif mengikuti suatu putaran.
- Reproduksi skenario yang lambat
- Buat profil untuk menemukan bagian yang paling membebani
- Optimalkan hanya bagian tersebut
- Buat profil ulang untuk mengonfirmasi perbaikan
steps = ['reproduce', 'profile', 'optimize hotspot', 're-profile']
steps.each_with_index { |s, i| puts "#{i + 1}. #{s}" }Pemeriksaan Singkat
Uji pengetahuan Anda tentang pembuatan profil.
Ringkasan
Anda telah mempelajari alat pembuatan profil:
- Alat pembuatan profil menunjukkan di mana waktu digunakan, bukan hanya berapa lama
ruby-profmenginstrumentasikan setiap pemanggilan untuk menghasilkan detail yang tepatstackprofmengambil sampel dengan ringan dan aman untuk produksi- Pilih mode CPU atau waktu dinding berdasarkan hambatan kinerja
- Ikuti putaran reproduksi, pembuatan profil, optimasi, dan pembuatan profil ulang
Selanjutnya Anda akan mengurangi alokasi memori.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Alat Pembuatan Profil” gratis?
Ya — teks lengkap “Alat Pembuatan Profil” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Ruby Academy, upgrade ke CoddyKit PRO. Kursus Ruby Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Alat Pembuatan Profil”?
ruby-prof dan stackprof. Kamu berlatih Ruby Academy 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 Ruby Academy?
Tidak diperlukan pengalaman sebelumnya. Ruby Academy 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 2 dari 4.
Berapa lama pelajaran “Alat Pembuatan Profil” 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 Ruby Academy ini?
Ya. Setiap pelajaran Ruby Academy 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
- Mengukur Performa
- Alat Pembuatan Profil
- Optimasi Memori
- Bottleneck Umum