Kod Değerlendirici

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Kod Geliştiricisi bir Developer Console içindeki bir araçtır, böylece tüm çalışan scriptlerin profil giriş seslerini kaydedip özelleştirilmiş kayıt ve görüntü ayarlarıyla CPU'nun işletim maliyetlerini görebilirsiniz. Tüm türlerdeki işlev çağrılarını, yö

Kayıt Etme Profili Oluşturma Sesleri

Kaydedmeden önce, kayıt ortamını seçmeniz gerekir:

  • Klient ** (Varsayılan) — Klient tarafındaki kodları kaydeder, bunların içinde LocalScripts ve Scripts ile 0> Class.BaseScript.RunContext|RunContext0> ayarı 3> Enum.RunContext.Client|Client 3> .
  • Sunucu — Sunucu-taraflı kodları kaydeder, Scripts ile RunContext arasında 0> 1> Enum.RunContext.Server|Server1> veya 4> 3> Enum.RunContext.Legacy|Legacy 4> . Kript Pro

Ayrıca şu kayıt seçeneklerini de ayarlayabilirsiniz:

DavranışSeçeneklerVarsayılanAçıklama
Frekans1 saniye başına 1.000 kez (1 KHz)10.000 kez başına 1.000 kez (10 KHz)1 Khz10 KHz frekansı, seçili frekansınızden daha sık çalıştığı API çağrılarını almayabilir, ancak daha yüksek performans maliyeti vardır.
Oturum Uzunluğu1-dakika5-dakika10-dakikaManuelManuelManuel seçenek, el yazmasını durdurmanızı gerektirir.
Canlı Anket DavranışıAçık/KapalıKapalıBu davranış, profil oluşturma ve yenilenmesi için her saniye profil verilerini yenilenir.

Yeni bir profil oturumkaydetmek için:

  1. Araçların menüsünü genişletin ScriptProfiler seçmek için.

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. Müşteri veya Sunucu seçmek için klient-sunucu menüsünü genişletin.

    Dropdown menu with Client and Server options for selection.
  3. (Opcional) Canlı seçeneğini kontrol ederek canlı anket davranışını etkinleştirin.

  4. (isteğe bağlı) Freq ve Time seçerek kayıt frekansı ve oturum süresini seçmezseniz varsayılan değerleri kullanmayın.

  5. Profilleştirme oturumbaşlatmak için Başla tıklayın. Eğer bir süre ayarlarsanız, Script Profiler, oturumgeri kalan süresiyle bir sayışım sayacı gösterir.

  6. Profil grafiklerini görmek için kaydı bitirene kadar Dur ya da bekleyin.

Profil Verileri Okuyor

Bir oturum durduktan sonra, Script Profiler, her işlevin CPU süresinde ne kadar para harcadığını gösteren bir tablo oluşturur. Tablo, en çok zaman harcayan işlevleri en az zaman harcayan işlevlerle sıralar ve isimlerine göre özel işlevleri arayabilirsiniz. Aşağıdaki iki görüntüyü sağlar:

  • Callgraph (Varsayılan): Kategoriyi kullanıcının ekranına göre sıralar ve işlevleri gösterir. Bu görüntü, her kategoriyi aynı kök altında gösterir ve işlevleri görebilmenizi sağlar. Ayrıca, Stepped/CameraInput/< Example callgraph view of a profiling session.
  • Fonksiyonlar : Bütün görevleri olmayan işlevleri listeler. Example functions view of a profiling session.

Ayrıca, şu görüntü seçeneklerinden de depresyon ihtiyaçlarınızı ayarlayabilirsiniz:

İsimSeçeneklerVarsayılanAçıklama
BirimMillisaniye (ms) Yüzde (%)msToplam kayıt oturumher API çağrısı için harcanan zamayı gösterir.
OrtaOff1-saniye1-dakika5-dakika10-dakikaKapalıSeçili değer tarafından her API çağrısı için ortalama süreyi hesaplar. Eğer oturum uzunluğundan daha uzun bir seçenek seçerseniz, Script profileri oturum uzunluğunu hesap etmek için ortalamayı hesaplar. Örneğin, 5 dakikalık bir oturum için 1 dakika bekleme süresini seçerseniz, kodu 5 dakika boyunca çalıştı

Profil Verileri İhracatı

Script Profiler, profil çekim işlemlerinin kaydedilmiş verilerini bir JSON dosyası olarak ihraç etmenizi sağlar. Bir profil çekim seansından sonra kaydedilen verileri ihraç etmek oturum:

  1. Script Profiler penceresinde, İhracatı İçe aktar seçeneğine tıklayın.

  2. Araç penceresinde, ihraç etmek istediğiniz profilasyon oturumunu seçin. Eğer özel bir isim belirlemek istiyorsanız, varsayılan dosya ismini değiştirin.

  3. JSON dosyasını kaydetmek için Dışa Aktar seçeneğine tıklayın.

    Example export window.

Aktarılan JSON dosyasında şu alanlar bulunur:

  • Versiyon : Versiyon numarası.
  • OturumBaşlangıcıZamanı : Oturum başlangıcı zamanını ayırt eden milisaniye olarak bir zaman damgası.
  • OturumBitmesiZamanı : Oturum bitmesi zamanını kaydeden milisaniye'lik bir zaman damgası.
  • Kategoriler : profilleme oturumuna kaydedilen bir dizi çerçeveli görev kategorisi. Her giriş içindeki her bir öğe:
    • İsim: Her kare görevi kategorisinin adı.
    • NodeId : Bir görev kategorisinin (dizin) benzersiz kimliği. 1-başlıklı bir İndeksi ile Nodes matrisine göz atabilirsiniz. Örneğin, 123. elemanı NodeId ile alarak 123. elemanın üzerindeki 123. elemanı g
  • Knotlar : profilleme oturumuna kaydedilen bir dizi giriş. Her giriş içerir:
    • Toplam Süre : Bobinin CPU süresinde mikrosaniye başına mal olması gereken süre.
    • FunctionIds : Fonksiyonların benzersiz kimlikleri bir matrisi.
    • NodeIds : Bir dizi node ID'si.
  • Fonksiyonlar : profilleme oturumuna kaydedilen bir dizi işlev.
    • Toplam Süre : Fonksiyonun CPU süresinde ne kadar para ödediğini gösterir.
    • İsim: : İşlevin adı, mevcutsa.
    • Kaynak : Fungsiyonun kaynağı, mevcutsa.
    • Satır : Eğer mevcutsa işlevin satır numarası.
    • Bayraklar : Belirli bir işlev çalışma çevregösteren biraz bir alan. Şu anda şu değerleri sağlayabilir:
      • 0 : Native CodeGen'de yürütülme için IsNative temsil eder.
      • 1 : 1. bit, bir eklenti'in bir parçası olarak IsPlugin için çalıştırılır.
Aktarılan Örnek Profil Verileri

{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Parallel Luau","NodeId":4},
{"Name":"Heartbeat","NodeId":1}
],
"Nodes":
[
{"TotalDuration":2530,"FunctionIds":[1],"NodeIds":[2]},
{"TotalDuration":2530,"FunctionIds":[2,5],"NodeIds":[3,7]},
{"TotalDuration":1267},
{"TotalDuration":7746,"FunctionIds":[3],"NodeIds":[5]},
{"TotalDuration":7746,"FunctionIds":[4],"NodeIds":[6]},
{"TotalDuration":7746},
{"TotalDuration":1263,"FunctionIds":[6],"NodeIds":[8]},
{"TotalDuration":1263,"FunctionIds":[7],"NodeIds":[9]},
{"TotalDuration":1263,"FunctionIds":[8],"NodeIds":[10]},
{"TotalDuration":1263}
],
"Functions":
[
{"Name":"main","TotalDuration":2530},
{"Source":"builtin_ManageCollaborators.rbxm.ManageCollaborators.Packages._Index.roblox_rodux-3.0.0.rodux.Store","Line":81,"TotalDuration":1267},
{"Name":"Script","TotalDuration":7746},
{"Source":"Workspace.Actor.Script","Line":1,"TotalDuration":7746},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Line":221,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_update","Line":236,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_getRange","Line":277,"TotalDuration":1263},
{"Source":"[C]","Name":"ScrollingFrame.CanvasPosition","TotalDuration":1263}
]
}