[Arşiv] Ticaretle ilgisi olmayan saf matematik, fizik, kimya vb. beyin jimnastiği bulmacaları - sayfa 510
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
Ve 36 katlı karmaşık bir test koşulundan oluşan if'yi basit bir koşulla 36 if'ye bölerek kodumu hızlandırabilirsiniz! :)))
Kodun gözle görülür şekilde hızlanacağını düşünüyorum, ancak kesin olarak bilmek için derlemeden kaynaklanan makine talimatlarını anlamanız gerekir.
Kodunuzu MT5'te çalıştırdım. İçinde, mantıksal operatörlerin kısa hesaplamaları zaten uygulanmaktadır (yerleşik), bu nedenle kodu birçok if'ye bölmenin bir anlamı yoktur.
MT4'te bu optimizasyonun anlamlı olduğu farklı bir konudur. Ancak kısa bir şemaya göre MT5'te zaman tahmini harcadım.
4 kez hızlandırıldı. Validate()'i yeniden yazdı.
Şimdi böyle:
Çalışma Süresi == 200msKorkunç, ancak kodu aşağıdaki gibi optimize etmek mantıklı. Birçok kez daha hızlı! Ve burada MT5 yardımcı olmayacak.
Kesinlikle bir fikir değil. Ama ne kadar hızlı çalıştığı ilginç! :))
Ayrıca kodda bölen değerlerinin aralığını azalttım . 654321/2 = 327160.5...
4 kez hızlandırıldı. Validate()'i yeniden yazdı.
Şimdi böyle:
Çalışma Süresi == 200msGüzel çıktı! Benim gibi değil.
Bir sütuna bölme algoritması yazma fikri var. Parça parça bölün, bölmenin kalanını yazın ve sonuç eşleşirse veya sonuç 6'dan büyükse devam işlemini yapın. Bu öğleden sonra, beşten geçerken her şeyi bir sütuna böldüğümde tam olarak bunu yaptım. Ama uzun zamandır! :))
Altı basamaklı sayıların gösteriminde sizin tarafınızdan yapıldığı gibi optimizasyon yapılması gerekmektedir.
Bir sütuna bölme algoritması yazma fikri var. Parça parça bölün, bölmenin kalanını yazın ve sonuç eşleşirse veya sonuç 6'dan büyükse devam işlemini yapın. Bu öğleden sonra, beşi sıraladığımda, her şeyi bir sütuna böldüğümde tam olarak bunu yaptım. Ama uzun zamandır! :))
Altı basamaklı sayıların gösteriminde sizin tarafınızdan yapıldığı gibi optimizasyon yapılması gerekmektedir.
Ö! Fikir güzel. Yeniden yazdı. Çalışma Süresi=125ms
Ö! Fikir güzel. Yeniden yazdı. Çalışma Süresi=125ms
Şimdi hokey oyuncuları kesinlikle mutlu olacak! :)))) Gerçi tam olarak bunu demek istemedim! ;D
Ve koduma göre zaman sayacı ne kadar gösteriyor?
Değişiklikleri anlıyorum. Henüz ona ulaşamadım:
"|=" - mantıksal "VEYA"? Ve sonra tam bir karmaşa...
Şimdi hokey oyuncuları kesinlikle mutlu olacak! :))))
Evet.
Yeni kodunuz daha da hızlı ama hatalar var.
Kıvrımlı parantezlerin sayısı eşleşmedi. Ama çöp gibi görünüyor, ikincisi kaldırılarak tedavi ediliyor.
Vurgulanan satırların anlamını açıklayın. yakalayamıyorum.
Evet.
Yeni kodunuz daha da hızlı ama hatalar var.
Kıvrımlı parantezlerin sayısı eşleşmedi. Ama çöp gibi görünüyor, ikincisi kaldırılarak tedavi ediliyor.
Vurgulanan satırların anlamını açıklayın. yakalayamıyorum.
Kesinlikle... Brad! :))) Ve norm gibi parantezlerle bitmiş koddan kopyaladım.
Bunun gibi olmalı:
Ayrıca MQL5'te karşılaştırmayı biraz hızlandıracaktır:
Ama 125 ms kesinlikle yetişmek değil.
Ya da belki C++?
.
Validate, tek bir parametre işlevidir.
Belki eski moda yol ... bellek tahsis et ve bool önbelleğini al
tüm geçerli argüman değerleri için?
MaxZ :
Değişiklikleri anlıyorum. Henüz ona ulaşamadım:
"|=" - mantıksal "VEYA"? Ve sonra tam bir karmaşa...
"|=" - bu durumda bit düzeyinde "veya". Bu şey, A[i]'ye eşit konumlarda bitleri XX kadar yükseltir.
Ve döngüden sonra, birinciden altıncıya kadar olan tüm bitler 1'e eşit olursa, bu, 1'den 6'ya kadar olan tüm rakamların X sayısında tam olarak bir kez buluştuğu anlamına gelir.
0x7E - 1111110 ikili sayısının onaltılık gösterimi. (sağ bit sıfırdır)