Genel sınıflar kütüphanesi - hatalar, açıklamalar, sorular, kullanım özellikleri ve öneriler - sayfa 14
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
Bana gelince, eğer bir nesne belirli bir arabirimi veya yöntemi uygulamıyorsa, o zaman sessizce susturmaktansa bir istisnayı açıkça ortaya koymak daha iyidir ve o zaman sorunların kaynağına ne kadar bakılacağı açık değildir.
Sonuç olarak, evet, asil bir tatar yayı ve kodla ilgili sorun hakkında bariz bir sessizlik ortaya çıkıyor.
Aynı nedenle, karşılaştırma yanlıştır. Bir ticaret ortamı elde etmek için özel CHashMap'i nasıl karşılaştırabilir ve sistem işlevleriyle nasıl çalışabilirsiniz?
Demir argümanları kabul etmediğiniz için optimal olmayan kod yazmaya devam edin.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Genel sınıf kitaplığı - hatalar, açıklama, sorular, kullanım ve öneriler
fxsaber , 2017.12.08 22:46
Daha gerçekçi bir test durumu için (2000 işlem ve 1.000.000 tek geçmiş erişimi), sonuç şöyle görünür
Geçiş başına yaklaşık 100 ms tasarruf! Örneğin, 10.000 tam geçiş için Optimizasyon yaparsak, Hash sürümü 15 dakika daha hızlı biter.
Sonuç olarak, evet, asil bir tatar yayı ve kodla ilgili sorun hakkında bariz bir sessizlik ortaya çıkıyor.
Demir argümanları kabul etmediğiniz için optimal olmayan kod yazmaya devam edin.
Her ikisi de bir tür saçmalık yazdı, HashMap'in şu anki haliyle struct ve union için çalışmadığını tek bir gram anlamadı.Sevgili, bir şey içiyorsanız ve muhatabın gönderisini dikkatlice okuyamıyorsanız , o zaman bunlar sizin sorunlarınızdır ve herkesin değil, sadece hastanın tedavi edilmesi gerekir.
Tekrar ediyoruz: kimse yapı ve birlik hakkında bir konuşma yapmadı, kimse bu konudaki fikirlerinize meydan okumadı ....
Özellikle kodun bu şartlarıyla ilgiliydi.
Standart kitaplıktan:
Ve eklediniz:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Genel sınıf kitaplığı - hatalar, açıklama, sorular, kullanım ve öneriler
fxsaber , 2017.12.08 21:17
Başka bir aşırı yük eklendi
Neyi iletmeye çalışıyordun:
Karma, kapsayıcıdaki öğelerin aranmasını hızlandırmak için kullanılır. O(1) hız - kapsayıcıya eklenen öğelerin sayısına bağlı değildir.
Durum - kullanıcı kendi sınıfını anahtar olarak kullanır.
1) Arayüzlerin çoklu kalıtımı olmaması nedeniyle ( MQL5'te arayüz yoktur ), kullanıcı IEqualityComparable'dan miras alamaz ;
2) Kullanıcı ayrıca GetHashCode şablon işlevi için açık bir belirtim belirtmeyi de unutur.
Sonuçlar - kullanıcı bir şeyi atladığı konusunda hiçbir şekilde bilgilendirilmez ve kod, istisnalar atılmadan başarıyla yürütülür ( MQL5'te istisna yoktur ).
Hız, ortalama karma hesaplama sabitiyle O(1)'den, karşılaştırma için yeterince büyük bir sabitle O(n)'ye düşer.
Yalnızca kaptaki çok sayıda öğeyle ve uygulamada bir darboğaz aramak için çok zaman harcayarak , kullanıcı sorunların nedenini bulabilir - sınıfı için açık bir GetHashCode belirtimi olmaması.
Alınma, teşekkürler.
Sevgili, bir şey içiyorsanız ve muhatabın gönderisini dikkatlice okuyamıyorsanız , o zaman bunlar sizin sorunlarınızdır ve herkesin değil, sadece hastanın tedavi edilmesi gerekir.
Eldiven, görünüşe göre, sigara içenler tarafından kapatılamaz.
Başlangıçta daldan bir örnek derlemesi yapmak planlanmamasına rağmen, algoritmaları henüz uygulamalarında kullanmayanların neden kullanışlı ve en önemlisi basit olduğunu anlamaları için bu tür birkaç örnek ekleme ihtiyacı hissediyorum.
Örnek 1: Bir çalışma zamanı hatasını dize açıklamasıyla ilişkilendirme
Oldukça sık, sayısal sabitleri dize değişmezlerine dönüştürmeniz gerekir. Örneğin, hata kodlarını, hatanın özünü ortaya çıkaran net bir yazıyla çoğaltmak daha iyidir. Bu çok zor bir görev değildir ve genellikle özel bir işlev veya bir anahtar durumu veya bunun gibi bir dizi ifs ile çözülür:
Böyle bir kararın yaşam hakkı vardır. Ama biz CHashMap'e dayalı bir çözüm anlatacağız ve sağladığı avantajları göstereceğiz.
Bu algoritma şöyle görünebilir:
- <hata kodu - hata açıklaması> biçiminde bir ilişkisel dizi oluşturun;
- Olası hata kodlarını ve açıklamalarını bu sözlüğe ekliyoruz;
- Doğrudan ve aracılar olmadan, koduna göre hatanın tanımını almak için sözlüğe dönüyoruz
Bu kod şöyle görünür:Hata kodları doldurulduktan sonra farklı fonksiyonlar kullanılmadan tek satır ile ulaşılır. Ayrıca, bazı durumlarda bu kodun birkaç düzine if'den bile daha hızlı çalışacağını hatırlatmama izin verin, çünkü istenen hataya adresleme, ortalama O (1) hızıyla doğrudan gerçekleşir.
Hata kodları doldurulduktan sonra farklı fonksiyonlar kullanılmadan tek satır ile ulaşılır.
ErrorToString'in yine de yazılması gerekecek. Bu nedenle, bir artı olarak argüman zayıftır.
Ayrıca, bazı durumlarda bu kodun birkaç düzine if'den bile daha hızlı çalışacağını hatırlatmama izin verin, çünkü istenen hataya adresleme, ortalama O (1) hızıyla doğrudan gerçekleşir.
Ama bu kesin bir artı.
Bir sözlük aracılığıyla önerilen çözümde, başlıcaları ilk bakışta tamamen açık olmayan çeşitli avantajlar vardır. Böyle bir kod yazdığımızda:
Ardından, hata kodlarını EA kodunun kendisine sıkıca dikeriz. Bir sözlüğü doldurduğumuzda, bunu dinamik olarak yaparız, yani. program yürütme sırasında. Dinamik yaklaşım bize büyük esneklik sağlıyor. Örneğin, ErrorsCode.txt gibi özel bir dosyada hata kodları bulunabilir:
Başlatma sırasında, program bu dosyayı okuyabilir ve sözlüğü gerekli kodlarla doldurabilir ve ardından dizenin istenen sürümünü kullanıcıya döndürebilir. Bu tür birkaç dosya olabilir: her dil için bir dosya. Bu şekilde, kullanıcının diline bağlı olarak hata kodlarının kendi dilinde görüntülendiği yerelleştirme gerçekleştirilebilir. Ayrıca, kullanıcının kendisi bu hata kodlarını bir kez kendi ana diline çevirebilir ve programın kendisi istenen mesajı kendi dilinde göstermeyi "öğrenir". Menü çevirisi bir metin dosyasında bulunduğunda ve ayarlara bağlı olarak program onu yüklediğinde, çoğu programın yerelleştirilmesi bu şekilde yapılır. Onlar. programı yeniden derlemeden ve algoritmasını değiştirmeden, sonuçlarının sunumunu önemli ölçüde etkileyebiliriz.