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
Aslında, tüm algoritmalar aynıdır. Herkes dizi elemanının modifikasyonunu eleman bazında gerçekleştirir ve herkes Fedoseev varyantına yönelir, çünkü onun ekstra bir şeyi yok.
Sadece benim için ArrayCopy kullanan bloklarda oluyor, bu yüzden hız kazancı var.
Peki ya Peter? Herkesi "yırttı" mı? Kimse kodunu kontrolöre eklemedi. Tahtadaki herkesi nasıl ve ne kadar dağıttığını merak ediyorum.
Sebepleri düşündüm ve içindeki iki satırı düzelttim, böylece öğelerin üçte biri silindi,% 0.1 değil.
Sonuç: Bir dizideki adresleri sayıları arasında rastgele bir mesafe ile hesaplamak, belirli bir adımda, özellikle 1. adımda, bir satırdaki öğelerin işlenmesinden hala daha kötüdür, derleyici bunu optimize edebilir.
Ve ne demek istediğini anlıyorum. Nedense bu cümleyi kaçırdım.
Evet, elbette, bu anlaşılabilir bir durumdur, ancak yine de, her üçüncü öğeyi atmam gerektiğinde bile (ardından ArrayCopy benim için çalışmayı durdurur ve kazanç kaybolur) farklı bir resmim var:
Pavlov'un gerçekten çalışmayan bir seçeneği var, ancak aynı zamanda doğru sağlama toplamını ve ardından yanlış olanı da veriyorsunuz.
Peki ya Peter? Herkesi "yırttı" mı? Kimse kodunu kontrolöre eklemedi. Tahtadaki herkesi nasıl ve ne kadar dağıttığını merak ediyorum.
Ve hayal gücünün uçuşunu asla anlamadım. Hiçbir zaman tamamlanmış bir işlev sağlamadı. Ve onun için yazmayı bitirirsem, oradaki her şeyi yeniden yaptığım için beni tekrar suçlayacaklar. ))
Ve hayal gücünün uçuşunu asla anlamadım. Asla tamamlanmış bir işlev sağlamadı. Ve onun için yazmayı bitirirsem, oradaki her şeyi yeniden yaptığım için beni tekrar suçlayacaklar. ))
Bir cep telefonundan koduna baktığımda, "doğrudan" yazdığı hissine kapıldım. Bu nedenle, bir işlev sağlamadı - arka arkaya her şeye sahip. Ve senaryosunda bir fonksiyon değil, düz çizgi kodu var. Böyle bir betiğin bir işlevi ima etmeyebileceği açık ama... Sanırım uçması için goto yeterli değil :)
Ama bunlar sadece benim hislerim.
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.
Düzeltildi.
Birkaç kez çalıştırdım, sonuçlar sarkıyor - bilgisayar çok yüklü, sadece Cumartesi günü piyasaya sürülecek. Başka biriyle kontrol etsen iyi olur. Ancak sağlama toplamı şimdi eşleşiyor. Çok seyrek önemsiz değerler için (%0,1)
2018.11.13 21:35:16.888 del_2 (GBPUSD.m,H1) Pastushak varyantı: Sağlama toplamı = 497057781; elemanlar - 998984; yürütme süresi = 418662 mikrosaniye
2018.11.13 21:35:16.898 del_2 (GBPUSD.m,H1) Korotky varyantı: Sağlama toplamı = 497057781; elemanlar - 998984; yürütme süresi = 10683 mikrosaniye
2018.11.13 21:35:16.918 del_2 (GBPUSD.m,H1) Fedoseev varyantı: Sağlama toplamı = 497057781; elemanlar - 998984; yürütme süresi = 9740 mikrosaniye
2018.11.13 21:35:16.928 del_2 (GBPUSD.m,H1) Semko varyantı: Sağlama toplamı = 497057781; elemanlar - 998984; yürütme süresi = 4691 mikrosaniye
2018.11.13 21:35:16.944 del_2 (GBPUSD.m,H1) Pavlov varyantı: Sağlama toplamı = 497057781; elemanlar - 998984; yürütme süresi = 12512 mikrosaniye
2018.11.13 21:35:16.957 del_2 (GBPUSD.m,H1) Nikitin varyantı: Sağlama toplamı = 497057781; elemanlar - 998984; yürütme süresi = 10720 mikrosaniye
2018.11.13 21:35:16.978 del_2 (GBPUSD.m,H1) Vladimir seçeneği: Sağlama toplamı = 497057781; elemanlar - 998984; yürütme süresi = 17197 mikrosaniye
üçüncüsü için
2018.11.13 21:57:17.838 del_2 (GBPUSD.m,H1) Pastushak varyantı: Sağlama toplamı = 668222; elemanlar - 667065; yürütme süresi = 65732 mikrosaniye
2018.11.13 21:57:17.838 del_2 (GBPUSD.m,H1) Korotky varyantı: Sağlama toplamı = 668222; elemanlar - 667065; yürütme süresi = 4757 mikrosaniye
2018.11.13 21:57:17.848 del_2 (GBPUSD.m,H1) Fedoseev varyantı: Sağlama toplamı = 668222; elemanlar - 667065; yürütme süresi = 4815 mikrosaniye
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) Semko varyantı: Sağlama toplamı = 668222; elemanlar - 667065; yürütme süresi = 5812 mikrosaniye
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) Pavlov varyantı: Sağlama toplamı = 1001157; elemanlar - 667065; çalışma zamanı = 0 mikrosaniye
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) Nikitin varyantı: Sağlama toplamı = 668222; elemanlar - 667065; yürütme süresi = 4749 mikrosaniye
2018.11.13 21:57:17.868 del_2 (GBPUSD.m,H1) Vladimir seçeneği: Sağlama toplamı = 668222; elemanlar - 667065; yürütme süresi = 9814 mikrosaniye
Pavlov yine başarısız olur.
Büyük olasılıkla, for döngüsünden geçişi hızlandırma konusundaki sonucum MQL dilleri için yanlıştır.
Ve ek bir dizinin oluşturulması, gereksizlerin toplu olarak silinmesine ilişkin fiili işlemin süresini azaltmalı ve diziyi gerekli başlangıç anına kadar değiştirmeden tutmalıdır. Şimdiye kadar, veri güvenliği burada tartışılmadı.
Peki ya Peter? Herkesi "yırttı" mı? Kimse kodunu kontrolöre eklemedi. Tahtadaki herkesi nasıl ve ne kadar dağıttığını merak ediyorum.
Yine de, Peter'ın seçeneğinde ustalaştı.
oldukça kompakt ve hatta düzgün çalışıyor. Peter'a saygılar.
Ancak hız açısından sondan ikinci sırada yer alıyor. Veya sondan ilk yer, bu şubenin sahibinin orijinal versiyonu hariç, hız için tamamen uygun değil.
:-) sırayı korumaya çalışmazsanız, zaman O(1) , tüm döngülerin toplam adım sayısı = dizi boyutu
kodlamak için çok tembel :-)
1. Soldan sağa ilk 3-ku'yu arıyoruz.
2. Bulunursa, o zaman sağdan sola üç olmayanı arıyoruz., bulunanı 3'ün yerine kopyalayın.
1,2 kesişene kadar devam edin, diziyi kopya sayısına göre kesin.
ideolojik olarak, bu tam olarak " kabarcık sıralama "nın 1/2'sidir :-) kopyalamak yerine takas yaparsanız, çıktı kısmen sıralı bir dizidir (tüm 3'ler sağa taşınır)
Başka bir iyileştirme:
Üzgünüm, iyi bir pazarlamacı olduğunuzu söylüyorlar ama bir programcı... benden bile daha kötü.
1. Silinen dahili tamsayı değişkeni başlatılmaz, yani sıfıra eşit olur, ancak garanti edilmez. Döngüde, geri kaydırma (ilk seferde) iki nedenden dolayı olmayacak - tahmin edin ne oldu.
2. (ana) Önce dizinin elemanlarını kaydırıyorsunuz , sonra silinen değişkenin değerini artırıyorsunuz ve ardından bir döngü olacak ve bir sonraki kaydırma gereğinden fazla gerçekleşecek. Başka bir deyişle, kodunuz orijinal diziyi çığ gibi yok edecektir.
Dizide fazladan eleman yok:
Dizide, tüm ekstra öğeler:
Üzgünüm, iyi bir pazarlamacı olduğunuzu söylüyorlar, ancak bir programcı ... benden bile daha kötü.
Alexey, gerçekten genç yetenekleri öldürüyorsun ...
bu pazarlamacı 5 yıldır satmaya başlayamadı .. ve bir programcı olarak daha da kötü olduğunu söylüyorsunuz :-)