0Pricing
Ruby Academy · Ders

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-prof ile 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 verir
  • GraphPrinter, çağıran ve çağrılan arasındaki ilişkileri gösterir
  • CallTreePrinter, 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 stackprof ile kurulur
# Gemfile
gem 'stackprof'

stackprof Çalıştırma

StackProf.run, bir bloğun profilini çıkarır ve sonuçları bir dosyaya yazar.

  • mode:, :cpu, :wall veya :object olabilir
  • out:, 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) }
end

stackprof 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ır
  • stackprof, 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

  1. Performans Ölçme
  2. Profil Oluşturma Araçları
  3. Bellek En İyileştirme
  4. Yaygın Darboğazlar
← Ruby Academy Sayfasına Dön