Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Standart dağıtımdan herhangi bir kod alın, profilini çıkarın ve ona göre sorular sorun, lütfen. Bu, durumu tekrarlanabilir bir şekilde değerlendirmenize ve doğru cevaplar vermenize olanak tanır.
Aksi takdirde, kodunuzun küçük parçalarının profil oluşturucu raporlarından sorumlu olması iyi değildir. Tüm kodunuzu tamamen farklı bir karışık ve satır içi temsile dönüştüren devasa bir optimize edici işi var.
Üreme olmadan kesin cevapların olmayacağını anlıyorum.
Standart kodların profilini çıkarmam pek olası değil, ancak tekrarlanabilir parçalar vermeye çalışacağım.
Cevaplar için teşekkürler!
1) Basit kodda yeniden oluşturmam pek mümkün değil, evet. Ve tüm proje vermeye hazır değil.
2) Bu özel durumda, katılıyorum.
Ancak aynı veya benzer denetimi kullanan başka birçok sınıf vardır ve TimeCurrent veya GetTickCount vazgeçilmezdir.
Aynı değeri birkaç kez istememek için çağrılarını nasıl optimize edebilirim?
Ve TimeCurrent gerçekten çok ağır hesaplamaların (her 1 veya 5 dakikada bir yapılmasına rağmen) arka planında fark edilebilecek kadar ağır mı?
Yoksa yine yanlış mı anladım ve Toplam CPU'nun %38.16'sı / Self CPU'nun %26.07'si if kontrolünün kendisi tarafından mı işgal edildi ( TimeCurrent işlevine yapılan çağrı hariç)? Ama o zaman bu neden böyle?
1) Bu kadar açgözlü bir açma braketinin neden anlaşılmasına yardımcı olmaz. Nasıl yorumlanır?
2) SelfCPU hakkında artık açık, teşekkürler. Bu, çağrılan işlevleri hesaba katmadan işlev kodundaki bir yüktür.
Bu aynı zamanda iTime ile hattın düşük SelfCPU'sunu da açıklıyor - çok nadiren ulaşıldı, nadiren çağrıldı.
Ama neden bu kadar büyük bir TotalCPU var? Yoksa tüm programdaki tüm iTime'ın (ve diğer CopyXXX işlevlerinin) yükünü gösteriyor mu?
Fonksiyonun yerel değişkenlerinin hacmine dikkat etmeye değer, çağrılanların satır içi olması nedeniyle hacmin artabileceğini hesaba katmanız gerekir.
İşlev yerel olanlar için 4 Kb'den fazla tüketiyorsa, yığın belleği sağlamak için bir yardımcı işlev işlevi çağrılır - bu, yerelin katı gerçeğidir ve bundan kurtulamazsınız.
Bir satır için TotalCPU, yalnızca o satırın "zamanı"dır
Her zaman %100 olması gerekmez mi? Veya @global_initializations ve @global_deinitializations da göz önüne alındığında biraz daha az.
%102'den fazla var ...(Geçmiş verilere göre 3003 oluşturun).
Eski profil oluşturucuya göre, makale daha fazlasının olabileceğini belirtti.
Profil oluşturma bize önemli istatistikler verir: her bir işlevin kaç kez çağrıldığı, yürütülmesi için ne kadar zaman harcandığı. Yüzde istatistikleriyle biraz kafanız karışabilir. Burada, istatistiklerin işlevlerin iç içe geçmesini dikkate almadığını anlamanız gerekir, bu nedenle tüm yüzdelerin toplamı %100'den çok daha fazla olacaktır.
Eski profil oluşturucuya göre, makale daha fazlasının olabileceğini belirtti.
Fonksiyonun yerel değişkenlerinin hacmine dikkat etmeye değer, çağrılanların satır içi olması nedeniyle hacmin artabileceğini hesaba katmanız gerekir.
İşlev yerel olanlar için 4 Kb'den fazla tüketiyorsa, yığın belleği sağlamak için bir yardımcı işlev işlevi çağrılır - bu, yerelin katı gerçeğidir ve bundan kurtulamazsınız.
Bir satır için TotalCPU, yalnızca o satırın "zamanı"dır
1) İşlev gövdesinde yalnızca bir çift değişken bildirildi (const bool benzetilmiş işlev parametresini saymaz).
2) Yani, işlemci 11 çalışma aracından biri için iTime( m_symbol, PERIOD_CURRENT, 0 ) aldığı zamanın %55'i ("m_CloseOnFirstTickOnly || m_OpenOnFirstTickOnly" koşulunun işe yaraması içindi)?
Yoksa "Çağrılara Göre İşlevler" modunu mu kastediyorsunuz (göstermedim)?
Daha detaylı konuşabilmek için bana anlaşılmaz gelen sonuçlarla tekrarlanabilir bir kod parçası yapmaya çalışacağım.
Basit bir örnek kullanarak profil oluşturucu verilerinin yorumlanmasına yardımcı olmanızı rica ediyorum.
Her şey çılgınca saçmalık gibi görünüyor.
İçeri girmeye çalışıyorum ama henüz çıkmıyor.
ZY Uykunun değiştirilmesini denedi.
Hepsi de anlaşılmaz profiler değerleri.
Basit bir örnek kullanarak profil oluşturucu verilerinin yorumlanmasına yardımcı olmanızı rica ediyorum.
Her şey çılgınca saçmalık gibi görünüyor.
MT4'te aynı kod kesinlikle mantıklı sonuçlar üretir.
MT5'te neyi yanlış yapıyorum?
ZY MT4'ten bir profil oluşturucu ile MT5'in son yapısı b2595'tir (b2593 - Dahili derleyici hatası veriyorsa).
Bu kadar basit bir örnek yazmak zorunda kaldım çünkü Profil oluşturucunun değerlerini bir savaş danışmanında önemli bir kaynak koduyla açıklamak imkansızdı.
Yukarıda sorulan sorular. Nasıl Uyku (1)'e girebilir, ancak Uyku (2)'ye giremez. Hiçbir şeyi başlatmadığına veya izlemediğine eminim, ama hemen cevabınızı hemen yazdınız.
Optimizasyon devre dışı bırakıldığında aynı saçmalık verilir. Üstelik, eski profil oluşturucu, henüz yeni bir yaklaşımın olmadığı b2596'da zaten yatıyor. Araştırmak için zaman harcadım...
Akıllı optimize edicinin arka arkaya iki Uyku'yu bir araya getirdiğini varsaydım. Ancak testler bunun böyle olmadığını göstermiştir.
Uyku(2) görünmez.