0Pricing
Ruby Academy · Pelajaran

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.

  • FlatPrinter adalah daftar metode yang diurutkan
  • GraphPrinter menunjukkan hubungan pemanggil dan yang dipanggil
  • CallTreePrinter menghasilkan 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 :object
  • out: menetapkan jalur file dump
require 'stackprof'

StackProf.run(mode: :cpu, out: 'profile.dump') do
  1_000_000.times { |i| Math.sqrt(i) }
end

Memeriksa Hasil stackprof

Gunakan alat baris perintah stackprof untuk membaca dump.

  • stackprof profile.dump --text untuk ringkasan
  • --method Name#meth untuk menelusuri satu metode secara mendalam
  • --flamegraph menghasilkan 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-prof menginstrumentasikan setiap pemanggilan untuk menghasilkan detail yang tepat
  • stackprof mengambil 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

  1. Mengukur Performa
  2. Alat Pembuatan Profil
  3. Optimasi Memori
  4. Bottleneck Umum
← Kembali ke Ruby Academy