![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
MT4'ün ne olduğunu bilmiyorum, win10'da çalıştırmak bile istemedi, Allah'a şükür bence
Yığın için bükülmüş.
ArrayCopy'yi dışarı sürmek zorunda kaldım . MQL5'te dizinin statik olduğuna lanet ettim.
![](https://c.mql5.com/3/250/x6hfo6_relrn0_h_2018-11-13_15-55-46.png)
Peki, hız açısından böyle bir içki yarışması zaten gittiyse, o zaman kendi versiyonumu sunacağım ...
Sürümünüz gerçekten en hızlısı, ancak bir hata içeriyor: dizinin tüm öğeleri filtreye eşitse, işleviniz dizinin dışında çöküyor.
Kendi versiyonumu sunacağım, hızı sizinkinden biraz daha düşük:
2018.11.13 17:16:38.618 masif v1 (EURUSD,M1) testi madeni=1512090
2018.11.13 17:16:40.083 masif v1 (EURUSD,M1) uzaylı testi=1464941
Bu soruları yıllardır soruyorsunuz. Çok şey öğrendin mi? Üzgünüz, ancak ikinizin de bayt düzeyi ve temel dizilerle uğraştığınız ve orada kaldığınız açık.
Sorunun kendisi yanlış ifade edilmiştir. Görev, yinelenen değerleri (OGE seviyesinin görevi) kaldırmak değil, daha fazlası, görünüşe göre geçerli öğeler listesini güncelliyorsunuz. Eğer öyleyse, o zaman soru kulağa oldukça farklı gelmelidir. Katılımcıları ve her şeyden önce kendinizi şaşırtıyorsunuz ve yanıltıyorsunuz: İlke olarak katılımcılara yanlış kararı empoze edin ve onlardan bunu etkili hale getirmelerini isteyin.
Programlama yapmak için programlama yapmıyorum, forumlarda mega programcı olmak ve akıllı olmak gibi bir amacım yok.
Soruda net olmayan şey: Diziyi verilen öğelerden temizle?
Sürümünüz gerçekten en hızlısı, ancak bir hata içeriyor: dizinin tüm öğeleri filtreye eşitse, işleviniz dizinin dışında çöküyor.
Kendi versiyonumu sunacağım, hızı sizinkinden biraz daha düşük:
2018.11.13 17:16:38.618 masif v1 (EURUSD,M1) testi madeni=1512090
2018.11.13 17:16:40.083 masif v1 (EURUSD,M1) yabancı testi=1464941
Evet teşekkür ederim. Düzeltildi.
Yalnız sende de bir yerde hata var tk. sağlama toplamı eşleşmiyor, çünkü bir yerde bir elementi kaybeder. Nerede olduğunu anlamadım.
Düzenlendi, gereksiz geçişler kaldırıldı
Her iki durumda da her öğe en fazla bir kez sürüklenir.
Evet, üzgünüm, gerçekten, bir kez. Birinin DBMS'den gelen yaklaşımla ilgileneceğini ve kontrol edeceğini umdum, beklemedim. kendime mecburdum.
ArrayDeleteValue.mq5'i denetleyicinize ekledim, iki kez sizinkinden daha kötü çıktı. Sebepleri düşündüm ve içindeki iki satırı düzelttim, böylece öğelerin üçte biri silindi,% 0.1 değil.
Şu şekilde çıktı:
2018.11.13 19:45:22.148 Del (GBPUSD.m,H1) Pastushak varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 108521 mikrosaniye
2018.11.13 19:45:22.148 Del (GBPUSD.m,H1) Korotky varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 5525 mikrosaniye
2018.11.13 19:45:22.148 Del (GBPUSD.m,H1) Fedoseev varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 4879 mikrosaniye
2018.11.13 19:45:22.164 Del (GBPUSD.m,H1) Semko varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 14479 mikrosaniye
2018.11.13 19:45:22.179 Del (GBPUSD.m,H1) Pavlov varyantı: Sağlama toplamı = 998744; elemanlar - 667421; çalışma zamanı = 0 mikrosaniye
2018.11.13 19:45:22.179 Del (GBPUSD.m,H1) Nikitin varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 5759 mikrosaniye
2018.11.13 19:45:22.179 Del (GBPUSD.m,H1) Vladimir seçeneği: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 1542 mikrosaniye
Pavlov varyantı bir hata verdi, yorum yapmak zorunda kaldım.
Sonuç: Bir dizideki adresleri, sayıları arasında keyfi bir mesafe ile hesaplamak, belirli bir adımda, özellikle 1. adımda, bir satırdaki öğeleri işlemekten hala daha kötüdür, derleyici bunu optimize edebilir.
PS Pascal ve Delphi için Borland derleyicilerinde, döngü değişkeni döngü yürütme sırasında (bellekte) önemli değildir, işlemci kayıtlarında bir yere yerleştirilir.
Evet, üzgünüm, gerçekten, bir kez. Birinin DBMS'den gelen yaklaşımla ilgileneceğini ve kontrol edeceğini umdum, beklemedim. kendime mecburdum.
ArrayDeleteValue.mq5'i denetleyicinize ekledim, iki kez sizinkinden daha kötü çıktı. Sebepleri düşündüm ve içindeki iki satırı düzelttim, böylece öğelerin üçte biri silindi,% 0.1 değil.
Şu şekilde çıktı:
2018.11.13 19:45:22.148 Del (GBPUSD.m,H1) Pastushak varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 108521 mikrosaniye
2018.11.13 19:45:22.148 Del (GBPUSD.m,H1) Korotky varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 5525 mikrosaniye
2018.11.13 19:45:22.148 Del (GBPUSD.m,H1) Fedoseev varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 4879 mikrosaniye
2018.11.13 19:45:22.164 Del (GBPUSD.m,H1) Semko varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 14479 mikrosaniye
2018.11.13 19:45:22.179 Del (GBPUSD.m,H1) Pavlov varyantı: Sağlama toplamı = 998744; elemanlar - 667421; çalışma zamanı = 0 mikrosaniye
2018.11.13 19:45:22.179 Del (GBPUSD.m,H1) Nikitin varyantı: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 5759 mikrosaniye
2018.11.13 19:45:22.179 Del (GBPUSD.m,H1) Vladimir seçeneği: Sağlama toplamı = 333586; elemanlar - 667421; yürütme süresi = 1542 mikrosaniye
Pavlov varyantı bir hata verdi, yorum yapmak zorunda kaldım.
Sonuç: Bir dizideki adresleri, sayıları arasında keyfi bir mesafe ile hesaplamak, belirli bir adımda, özellikle 1. adımda, bir satırdaki öğeleri işlemekten hala daha kötüdür, derleyici bunu optimize edebilir.
PS Pascal ve Delphi için Borland derleyicilerinde, döngü değişkeni döngü yürütme sırasında (bellekte) önemli değildir, işlemci kayıtlarında bir yere yerleştirilir.
Pavlov'un versiyonu düzeltildi.
Garip değerlerin var. Belki de kodu yeniden derlemeden profil oluşturduktan veya hata ayıklayıcıdan sonra komut dosyasını çalıştırdınız?
Bunu şöyle anlıyorum:
Ve varyantınızda yanlış sağlama toplamı üretir. Ve genel olarak, ek bir dizinin oluşturulması herhangi bir fayda sağlamaz, aksine süreci yavaşlatır ve hatta ek kaynakları tüketir.
Sadece benim için ArrayCopy kullanan bloklarda oluyor, bu yüzden hız kazancı var.