Profil Oluşturma Araçları
ruby-prof ve stackprof
Profil Oluşturma Araçları, CoddyKit'te ücretsiz bir Ruby Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Ruby Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Ruby Academy kursu toplamda 4 dersten oluşur.
Kıyaslama ve Profil Oluşturucu
Bir kıyaslama bir işlemin ne kadar sürdüğünü söyler. Bir profil oluşturucu ise zamanın işlem içinde nereye harcandığını gösterir.
- Profil oluşturucular zamanı yöntem veya satır başına ayrıştırır
- Hiç tahmin edemeyeceğiniz sıcak noktaları ortaya çıkarırlar
- Popüler Ruby profil oluşturucuları: ruby-prof ve stackprof
# Profilers answer: which method consumed the most time?
puts 'Benchmark = how long, Profiler = where'ruby-prof Genel Bakış
ruby-prof, ayrıntılı ve her çağrıyı izleyen bir profil oluşturucudur.
- Çağrı sayıları ve zamanlamalar çok hassastır
- Ek yükü daha fazladır; bu nedenle temsilî örnekler üzerinde kullanın
gem install ruby-profile kurulur
# Gemfile
gem 'ruby-prof'ruby-prof ile Bir Bloğun Profilini Çıkarma
Yazdırabileceğiniz bir sonuç yakalamak için kodu RubyProf.profile ile sarın.
- Bir profil sonucu nesnesi döndürür
- Çıktı için sonucu bir yazıcıya aktarın
require 'ruby-prof'
result = RubyProf.profile do
1000.times { |i| (1..i).reduce(:+) }
end
RubyProf::FlatPrinter.new(result).print(STDOUT)ruby-prof Yazıcıları
ruby-prof farklı görünümler için birkaç yazıcı sunar.
FlatPrinter, yöntemlerin sıralı listesini verirGraphPrinter, çağıran ve çağrılan arasındaki ilişkileri gösterirCallTreePrinter, KCachegrind için çıktı üretir
require 'ruby-prof'
result = RubyProf.profile { 100.times { 'x' * 1000 } }
RubyProf::GraphPrinter.new(result).print(STDOUT, min_percent: 1)Düz Profil Okuma
Düz profil, yöntemleri harcanan zamana göre listeler.
- %self, yöntemin kendisinde harcanan süre
- toplam, çağrılan yöntemler dahil toplam süre
- çağrı sayısı, kaç kez çağrıldığı
Önce en yüksek %self değerlerine sahip girdilere odaklanın.
# Example flat output columns:
# %self total self wait child calls name
puts 'Optimize the top %self method first'stackprof Genel Bakış
stackprof, örnekleme yapan bir profil oluşturucudur. Çağrı yığınını belirli aralıklarla kaydeder.
- Ek yükü çok düşüktür; üretimde kullanım için güvenlidir
- CPU, duvar saati veya nesne ayırma temelinde örnekler
gem install stackprofile kurulur
# Gemfile
gem 'stackprof'stackprof Çalıştırma
StackProf.run, bir bloğun profilini çıkarır ve sonuçları bir dosyaya yazar.
mode:,:cpu,:wallveya:objectolabilirout:, döküm dosyasının yolunu belirler
require 'stackprof'
StackProf.run(mode: :cpu, out: 'profile.dump') do
1_000_000.times { |i| Math.sqrt(i) }
endstackprof Sonuçlarını İnceleme
Dökümü okumak için stackprof komut satırı aracını kullanın.
- Özet için
stackprof profile.dump --text --method Name#meth, tek bir yöntemin ayrıntılarına iner--flamegraph, alev grafiği verisi üretir
# Shell
# stackprof profile.dump --text
# stackprof profile.dump --method 'Array#sort'
puts 'Analyze the dump with the stackprof CLI'Örnekleme ve Araçlandırma
İki profil oluşturucu doğruluk ile ek yük arasında seçim yapar.
- ruby-prof her çağrıyı araçlandırır: kesin ama daha yavaştır
- stackprof örnekleme yapar: yaklaşık ama düşük maliyetlidir
- Üretimde stackprof, derinlemesine incelemelerde ruby-prof kullanın
modes = { 'ruby-prof' => 'instrumenting', 'stackprof' => 'sampling' }
modes.each { |tool, kind| puts "#{tool}: #{kind}" }Duvar Saati ve CPU Süresi
Profil çıkarma kipini darboğaza göre seçin.
- CPU kipi, hesaplama ağırlıklı kodu gösterir
- Duvar saati kipi, ağ veya disk gibi G/Ç beklemelerini de yakalar
- Veritabanı çağrıları yapan yavaş uç noktalar için duvar saati kipi gerekir
# I/O bound? use wall. CPU bound? use cpu.
bottleneck = 'database query'
mode = bottleneck.include?('query') ? :wall : :cpu
puts "Use mode: #{mode}"Profil Çıkarma İş Akışı
Etkili profil çıkarma bir döngüyü izler.
- Yavaş senaryoyu yeniden oluşturun
- Sıcak noktayı bulmak için profil çıkarın
- Yalnızca o sıcak noktayı iyileştirin
- İyileşmeyi doğrulamak için yeniden profil çıkarın
steps = ['reproduce', 'profile', 'optimize hotspot', 're-profile']
steps.each_with_index { |s, i| puts "#{i + 1}. #{s}" }Hızlı Kontrol
Profil çıkarma bilginizi sınayın.
Özet
Profil çıkarma araçlarını öğrendiniz:
- Profil oluşturucular yalnızca sürenin ne kadar olduğunu değil, zamanın nerede harcandığını gösterir
ruby-prof, ayrıntılı ve hassas sonuçlar için her çağrıyı araçlandırırstackprof, düşük maliyetle örnekleme yapar ve üretimde güvenlidir- Darboğaza göre CPU veya duvar saati kipini seçin
- Yeniden oluşturma, profil çıkarma, iyileştirme ve yeniden profil çıkarma döngüsünü izleyin
Sonraki bölümde bellek ayırmalarını azaltacaksınız.
Sıkça Sorulan Sorular
“Profil Oluşturma Araçları” dersi ücretsiz mi?
Evet — “Profil Oluşturma Araçları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Ruby Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Ruby Academy kursu toplamda 4 dersten oluşur.
“Profil Oluşturma Araçları” dersinde ne öğreneceğim?
ruby-prof ve stackprof Ruby Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Ruby Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Ruby Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Profil Oluşturma Araçları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Ruby Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Ruby Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Performans Ölçme
- Profil Oluşturma Araçları
- Bellek En İyileştirme
- Yaygın Darboğazlar