Kaç farklı seçenek olabilir? makul sayı? 10, 20, 100? 100 seçenekle bile, geçiş OOP'den daha hızlıdır.
Aşırı genellemeye karşı uyarmak istiyorum. Sanal "sözde işaretçiler" kullandığı için mql'de böyle bir etki beklemek mantıklıdır - aslında, gerçek adreslerin dahili (gizli) karma tablosuna atıfta bulunan işler. Bu tür işaretçileri çözmek için, işaretçiye doğrudan hitap etmekten çok daha fazla, önemli bir ek süre gereklidir. Bunu ölçmedim, ancak dotNET dillerinde ve diğer benzer uygulamalarda benzer bir işaretçi "yavaşlama" etkisinin bulunması muhtemeldir.
"Gerçek" işaretçilere sahip dillerde, böyle bir etki olmayacak, anahtar orada kaybolacak - ne kadar çok seçenek listesi o kadar büyük.
Yani OOP'nin bununla hiçbir ilgisi yok.
Aşırı genellemeye karşı uyarmak istiyorum. Sanal "sözde işaretçiler" kullandığı için mql'de böyle bir etki beklemek mantıklıdır - aslında, gerçek adreslerin dahili (gizli) karma tablosuna atıfta bulunan işler. Bu tür işaretçileri çözmek için, işaretçiye doğrudan hitap etmekten çok daha fazla, önemli bir ek süre gereklidir. Bunu ölçmedim, ancak dotNET dillerinde ve diğer benzer uygulamalarda benzer bir işaretçi "yavaşlama" etkisinin bulunması muhtemeldir.
"Gerçek" işaretçilere sahip dillerde, böyle bir etki olmayacak, anahtar orada kaybolacak - ne kadar çok seçenek listesi o kadar büyük.
Yani OOP'nin bununla hiçbir ilgisi yok.
Sorunun yalnızca derleyicinin kendisinde olduğu açıktır, bu nedenle "doğru" derleme ile yukarıdaki örneklerin yürütme süresi eşit olacaktır.
Hatayı hemen belirteceğim: f kukla bir işlevdir ve derleyici tarafından tamamen kesilmiştir. Yani, aslında, hiçbirişlev çağrısı yoktur. Ayrıca, ff işlevinin hangi durumda dejenere olacağından ve sonunda for döngüsü içinde satır içi olup olmayacağından, böylece işlev çağrısını bile kaldıracağından emin değilim.
Ancak sanal yöntem kesilemez - her zaman çağrılır. Sonuç olarak, bir durumda döngü basitçe dönüyor ve diğerinde çağrı döngüde.
Herhangi bir testte, her şeyden önce, doğruluğunu kanıtlamak ve ancak daha sonra sonuçlara geçmek gerekir.
İşte tüm benzersiz işlevler, ayrıca geçiş yoluyla çağrılanlar , sınıf yönteminden daha karmaşıktır.
İşte tüm benzersiz işlevler, ayrıca geçiş yoluyla çağrılanlar , sınıf yönteminden daha karmaşıktır.
Her şey nasıl başladı...
Inlining'i duydunuz mu? Agresif satır içilemeye ne dersiniz?
Basit işlev gövdelerine genellikle ne olur ve normal bir optimize edici derleyici bunlarla ne yapar? Şimdi 1995 değil.
Aşırı genellemeye karşı uyarmak istiyorum. Sanal "sözde işaretçiler" kullandığı için mql'de böyle bir etki beklemek mantıklıdır - aslında, gerçek adreslerin dahili (gizli) karma tablosuna atıfta bulunan işler. Bu tür işaretçileri çözmek için, işaretçiye doğrudan hitap etmekten çok daha fazla, önemli bir ek süre gereklidir. Bunu ölçmedim, ancak dotNET dillerinde ve diğer benzer uygulamalarda benzer bir işaretçi "yavaşlama" etkisinin bulunması muhtemeldir.
"Gerçek" işaretçilere sahip dillerde, böyle bir etki olmayacak, anahtar orada kaybolacak - ne kadar çok seçenek listesi o kadar büyük.
Yani OOP'nin bununla hiçbir ilgisi yok.
Evet. İşte C keskinliğinde :)
7550021 (anahtar)
2250004 (OOP)
7325029 (anahtar)
2050015 (OOP)
7550049 (anahtar)
2150005 (OOP)
7575031 (anahtar)
2325009 (OOP)
8025038 (anahtar)
2200004 (OOP)
7150027 (anahtar)
2050014 (OOP)
7375029 (anahtar)
2200005 (OOP)
7550022 (anahtar)
1950003
7100021 (anahtar)
2695083
7360033 (anahtar)
2200008 (OOP)
7825029 (anahtar)
1925010 (OOP)
7325025 (anahtar)
20205006 (OOP)
6850035 (anahtar)
2525014 (OOP)
7750027 (anahtar)
197507 (OOP)
8195225 (anahtar)
2050004 (OOP)
6950020 (anahtar)
2425006 (OOP)
7275029 (anahtar)
2225015 (OOP)
7050037 (anahtar)
2200007 (OOP)
7375030 (anahtar)
Herhangi bir teste, doğru olduğuna ve belirtilenlerin gerçekten içinde ölçüldüğüne dair kanıtlarla başlayın.
Yukarıda sunulanlar şaşırtıcı hatalar içeriyor ve derleme mekanizmalarının yazarının ve kodun nasıl çalıştığını tam olarak anlamadığını gösteriyor.
Herhangi bir teste, doğru olduğuna ve belirtilenlerin gerçekten içinde ölçüldüğüne dair kanıtlarla başlayın.
Yukarıda sunulanlar şaşırtıcı hatalar içeriyor ve derleme mekanizmalarının yazarının ve kodun nasıl çalıştığını tam olarak anlamadığını gösteriyor.

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Başlangıç sırasında ayarlanan parametrelere bağlı olarak temel sınıf, birkaç soyundan, soyundan biri kullanılır. Bu, evrensel programın iyi bilinen bir ilkesidir. Ne kadar seçenek olursa olsun (yani alt sınıflar), programı değiştirmek için if veya anahtar çağrıları olmadığından, başlatma sırasında yalnızca bir kez istenen alt sınıf seçildiğinden, bu işin çok hızlı çalışması gerektiği anlaşılmaktadır, o zaman her şey doğrudan ve basit bir şekilde çalışır.
Yine de...
Kaç farklı seçenek olabilir? makul sayı? 10, 20, 100? 100 seçenekle bile, geçiş OOP'den daha hızlıdır.
Uygulamada, performansı karşılaştırmak için bir komut dosyası. Yukarıdaki OOP karşılaştırılır ve sadece işlevlerle değiştirilir (ayrıca iki işlev çağrılır,işlev çağrılarından biri kolayca ortadan kaldırılabilir).
Sonuçlar (f99'u arayın):