MT5 Kod Profil Oluşturucu Hakkında - sayfa 7

 

Bu ne?!


 
fxsaber # :

Profil oluşturucu, aslında orada olmayan işlev çağrılarını gösterir. Hatta bununla karşılaştım:

mqh dosyasının kaynağında olmayan bir tür ArrayCopy! Aynı zamanda, statik bir dizinin bildirimini kırmızı bir çizgi ile vurguladım.

Ve profil oluşturucuyu kullanmak maalesef mümkün değil.

Ve nesneleri oluştururken, atarken ve taşırken dizilerin nasıl ve hangi şekilde taşındığını düşünürsünüz (ve bir nesneniz var).

Programın gerçekten sadece sizin satırlarınızdan ibaret olduğunu mu düşünüyorsunuz?

Örnekler tam değil.

 
Renat Fatkhullin # :

Ve nesneleri oluştururken, atarken ve taşırken dizilerin nasıl ve hangi şekilde taşındığını düşünürsünüz (ve bir nesneniz var).

Programın gerçekten sadece sizin satırlarınızdan oluştuğunu mu düşünüyorsunuz?

Örnekler tam değil.

Bu konuyla gecikmeden ilgilenebilmeniz için benim tarafımdan ne yapılması gerektiği konusunda net talimatlar verin.

 
fxsaber # :

Bu konuyla gecikmeden ilgilenebilmeniz için benim tarafımdan ne yapılması gerektiği konusunda net talimatlar verin.

Anlamadığınız bir konu (derleyiciler ve içindekiler) hakkında iddialarda bulunuyorsunuz.

Talimat yardımcı olmayacak - nesne dillerinde örtük olarak oluşturulan kodun geniş dünyasını anlamak için bir derleyici geliştirici kursu almayacaksınız. Üst düzey diller çok fazla kitaplık ve gömme kodu kullanır. Ortalama bir WinAPI projesi oluşturun ve *.map dosyasına bakın - binlerce yardımcı işlev vardır ve bunların herhangi biri profil oluşturmada görünebilir.

Onlarca kez yineliyorum "sonuçta çıkan kod sizin kodunuzla ilgili değil, optimize edilmiş, yerleşik ve optimize edici derleyici tarafından karıştırılmış" sözleri de kulaklara çıkmıyor. Derleyicinin asıl görevi, kodu okunabilir değil, olabildiğince hızlı hale getirmektir. Profil oluşturucu, optimize edilmiş (gerçek) kodda gerçek darboğazlar göstermeli ve dize eşleştirme ile aldatmamalıdır.

Karşılaştırıldığında, optimize edici eşleştirmede oldukça kötü olduğundan, C++ kodunun profilini çıkarmak şu anda genellikle çok zor bir iştir. Ve evet, Microsoft Visual Studio C++ bir standart değildir, çok zayıf/kötü kod üretir. LLVM/Clang şeklinde rakiplerinden %20-30 daha kötü.


İncelenen kodda değişiklik yapmayan bir profil oluşturucumuz olduğunu bir kez daha tekrarlıyorum. Kontrol süresi artar, ancak gerçekte kod, sayaçları gömerek bozulmaz - bu, kod optimizasyonunu tamamen öldürür.

Profilleme için "Örnekleme" yöntemi kullanılır. Profil oluşturucu, MQL programının çalışmasında duraklamalar yapar (saniyede ~1000 kez) ve kodun belirli bir bölümünde kaç kez duraklama gerçekleştiğine ilişkin istatistikleri toplar. Dahil olmak üzere, her işlevin toplam kod çalışma süresine "katkısını" belirlemek için çağrı yığınları analiz edilir. Profil oluşturmanın sonunda, duraklamanın kaç kez yapıldığı ve her işlevin çağrı yığınında kaç kez sona erdiği hakkında bilgi alırsınız:

  • Toplam CPU etkinliği [birim, %] — işlevin çağrı yığınındaki toplam "görünüş" sayısı.
  • CPU içsel etkinliği [birim, %] — doğrudan belirtilen işlev içinde meydana gelen "duraklamaların" sayısı. Bu sayaç, "darboğazları" belirlemek için en önemlisidir, çünkü istatistiklere göre, programın daha fazla CPU zamanı gerektiren bölümlerinde bir durma daha sık gerçekleşir.



Tek adımlı tekrarlanabilir örnekler olmadan soruları dikkate almayız. Birkaç mikro görev çağrısından elde edilen basitleştirilmiş sentetikler, alınan sürenin yüzdesi veya toplam süreye katkısı açısından da düşünülemez.

 
Renat Fatkhullin # :

Anlamadığınız bir konu (derleyiciler ve içindekiler) hakkında iddialarda bulunuyorsunuz.

Bahsettiğiniz konu hakkında kesinlikle hiçbir fikrim yok. Profil oluşturucu, hiçbir şekilde yorumlanamayan bazı verileri gösterir.

Bir kez daha tekrar ediyorum ki, incelenen koda neredeyse gecikmeler getirmeyen bir profil oluşturucumuz var. Kontrol süresi artar, ancak gerçekte kod, sayaçları gömerek bozulmaz - bu, kod optimizasyonunu tamamen öldürür.

Yeni bir profil oluşturucu ile darboğazları görmeye çalışıyorum. Çok uğraşmama rağmen olmuyor.

Tek adımlı tekrarlanabilir örnekler olmadan soruları dikkate almayız. Birkaç mikro görev çağrısından elde edilen basitleştirilmiş sentetikler, alınan sürenin yüzdesi veya toplam süreye katkısı açısından da düşünülemez.

Oynatma verilerini kime göndermeliyim? LAN verileri, LAN mesajlarının uzun süre okunamayabileceğini gösterir.

İki yeşil tik - mesaj okundu, bir - okunmadı.

 
fxsaber # :

Bahsettiğiniz konu hakkında kesinlikle hiçbir fikrim yok. Profil oluşturucu, hiçbir şekilde yorumlanamayan bazı verileri gösterir.

Yeni bir profil oluşturucu ile darboğazları görmeye çalışıyorum. Çok uğraşmama rağmen olmuyor.

Oynatma verilerini kime göndermeliyim? LAN verileri, LAN mesajlarının uzun süre okunamayabileceğini gösterir.

İki yeşil tik - mesaj okundu, bir - okunmadı.

sadece çekiç bir yere veya başka bir yere ne kadar sık vurursa, işlev o kadar pahalı olur

ucuz değişkenlerde sayaca çarpma olasılığı nedir? neredeyse 0

sayacın içine düşeceği hemen net fonksiyonlar var, bunlar atlanıyor, aşağıdaki kullanıcıya bakıyoruz

 
Fast235 # :

sadece çekiç bir yere veya başka bir yere ne kadar sık vurursa, işlev o kadar pahalı olur

ucuz değişkenlerde sayaca çarpma olasılığı nedir? neredeyse 0

sayacın içine düşeceği hemen net fonksiyonlar var, bunlar atlanıyor, aşağıdaki kullanıcıya bakıyoruz

Pratik uygulamadan bahsediyorum ve ilk defa netleşen güzel bir teoriden değil.

 
fxsaber # :

Pratik uygulamadan bahsediyorum ve ilk defa netleşen güzel bir teoriden değil.

pratik daha önce nasıldı, kaç kez denir?

bu tamamen mükemmeliyetçi bir ilgi,

Ucuz olsalar bile fazladan aramalar görmeniz gerektiğine katılıyorum

 
Fast235 # :

pratik daha önce nasıldı, kaç kez denir?

Önceki profilci darboğazları bulmamıza izin verdi, ancak burada teorik olarak her şey birkaç kez çalışılmış olmasına rağmen, verileri neler olduğunu anlamamıza izin vermeyen yeni bir tane hakkında konuşuyoruz.

 
fxsaber # :

Önceki profilci darboğazları bulmamıza izin verdi, ancak burada teorik olarak her şey birkaç kez çalışılmış olmasına rağmen, verileri neler olduğunu anlamamıza izin vermeyen yeni bir tane hakkında konuşuyoruz.

Renat yeni bir profil oluşturucuyu genel ifadelerle göstermemeliydi, ancak subwoofer'lar gibi insanlar için bile ikna olmuş bir şey olurdu) (Küçülmüyorum.)