Algoritmalar, karar yöntemleri, performanslarının karşılaştırılması - sayfa 15

 
fxsaber :

Topluma karşı açık bir şekilde tekrarlanan saygısızlık ve belirgin provokasyonlar görülüyor.

Bunu (bir kişinin çeşitli yapıcı dallardaki gönderilerini) okumamak ve ardından gözden kaçırmak ve unutmak her zaman mümkün değildir - daha da fazlası.

Sayısı bu kaynağı olumlu yönden büyük ölçüde ayıran yardım ellerinde trolleme ve tükürme.


Belki de yanılıyorum.

Duygularınızı kontrol edin lütfen. Başka birinin bakış açısını kabul etmiyorsanız, tartışmaya katılamazsınız. Kimse seni zorlamıyor.

 
Vladimir Karputov :

Beni düzeltin ama dize uzunluğu sonlu değil mi?

https://msdn.microsoft.com/en-us/library/sx08afx2.aspx

MQL5 için bu sınırlamayı bulamıyorum ...

Bir dize, otomatik yeniden bölümleme için kendi özellikleri olan bir uchar dizisidir. Bu nedenle, bir dizenin uzunluğu sınırlı değildir, en azından açıkça değil, ne de bir dizinin boyutu. Ancak, ERR_STRING_RESIZE_ERROR (Dizeyi yeniden tahsis etmek için yeterli bellek yok) gibi belirli bir hata koduyla belirtildiği gibi, çok uzun bir dize potansiyel olarak bellek yetersiz kalabilir.


 
Vasiliy Sokolov :

Bir dize, otomatik yeniden bölümleme için kendi özellikleri olan bir uchar dizisidir. Bu nedenle, bir dizenin uzunluğu sınırlı değildir, en azından açıkça değil, ne de bir dizinin boyutu. Ancak, ERR_STRING_RESIZE_ERROR (Dizeyi yeniden tahsis etmek için yeterli bellek yok) gibi belirli bir hata koduyla belirtildiği gibi, çok uzun bir dize potansiyel olarak bellek yetersiz kalabilir.


Benim için de değerli bilgiler. Teşekkür ederim.
 
fxsaber :

Yalnızca bellekle sınırlıdır

uzunluk türü üzerindeki kısıtlamanın, yani. INT_MAX'ın yanında
 
Реter Konow :

1. Yani algoritmanın hızı önemli değildir. Çözüm "kavramsal olarak güçlü" ve bu yeterli. TAMAM.

2. Yani, içerme yoluyla bağlı ve bu kadar mı? İyi.

//------------------------------------------------ --------------------

Bir algoritmayı değerlendirmenin ana kriteri " Kavramsal güç " ise, o zaman kaybettim.

Bir algoritmayı değerlendirmek için ana kriter basitlik, hız ve kolaylık ise, o kazanır.

Bu konu kapatılabilir.


Dizeyi aynı boyutta iki int[] ile değiştirip birinde anlaşma numarasını, diğerinde sihirli sayıyı saklarsanız, "algoritmanızı" hızlandırabilir ve basitleştirebilirsiniz (ve size bu konuda sürekli söylenir). Deal dizisinin karşılık gelen numaralandırmasıyla istenen sihirli dizini arayın. Daha hızlı olacak. Tabii ki, bu sizin örneğinize göre özel bir durum.

Petr dizileri tanıdı ve onların evrensel ve güçlü bir araç olduğunu fark etti, sonra dizileri öğrenmeye başladı... ve yapılarla tanıştığında ne olacağını hayal edebiliyor musunuz? ve şablonları öğrendiğinde ne olacağını düşünmeye korkuyorum :)

Peter, örneğinde bu işlevleri değiştiriyor:

 struct SDealMagic { int deal,magic;} array[];
//
void Trading()
{
   Random_orders_of_strategy= MathRand ();
   ArrayResize (array,Random_orders_of_strategy);
   for ( int i= 0 ; i<Random_orders_of_strategy; i++)
   {
      array[i].deal=i;
      array[i].magic= MathRand ()
   }
}
//
int Get_magic( int deal_number)
{
   for ( int i= 0 ; i<Random_orders_of_strategy; i++)
       if (array[i].deal==deal_number) return (array[i].magic);
   return (- 1 );
}

Ve hız şablonu yapacak :)

 
Реter Konow :

1. Yani algoritmanın hızı önemli değildir. Çözüm "kavramsal olarak güçlü" ve bu yeterli. TAMAM.

2. Yani, içerme yoluyla bağlı ve bu kadar mı? İyi.

//------------------------------------------------ --------------------

Bir algoritmayı değerlendirmenin ana kriteri " Kavramsal güç " ise, o zaman kaybettim.

Bir algoritmayı değerlendirmek için ana kriter basitlik, hız ve kolaylık ise, o kazanır.

Bu konu kapatılabilir.


Sadece bir örnek en sıradan gösterilir - yani. bir sürü ekstra bilgi, tamam, en azından baskı için hata ayıklama ve tanımlama işleyicisi yok - aksi takdirde 300 satır eklenmiş olurdu.

Ama sanki tüm kod tamamen ....

kodun sadece kütüphane üzerinden eklenmesi ve çağrılması için gerekli olan kısmı çok daha kullanışlı, daha az kod, daha okunaklı olacaktır.

 
Alexandr Andreev :

sihirli bir ticker gelir - onu kaydetmeniz ve ardından ticker veya sihir üzerinde uygun bir şekilde çekmeniz gerekir. peki, hadi biraz karmaşıklaştıralım - yani. tüm değerleri kaydet, sihirli ticker TR SL yorumu, açık fiyat, zaman, kapanış fiyatı. - sanal siparişleri hesaba katmak için diyelim

Aslında en hızlı çözüm tüm bilgileri bir yapıda saklayacaktır. Ancak bağlantılar dizininin sıralı bir özeti aracılığıyla erişim sağlamak. ve majik ve tekr üzerinde. onlar. iki tane olacak - hafızadan bu mantıklı değil elbette - ama sık sık sipariş alırsak, hız açısından en iyisidir.

Bu önden bir çözümdür ve bu nedenle en hızlısı değildir. HashMap aracılığıyla yapmak daha iyidir. Ancak mevcut uygulamada, bir yapıya değil, emirlerinin alanlarını tanımlamak için belirli bir arayüzden miras alınan bir sınıfa ihtiyaç duyacaktır.

 
Yury Kulikov :

Dizeyi aynı boyutta iki int[] ile değiştirirseniz ve birinde anlaşma numarasını, diğerinde sihirli sayıyı saklarsanız, "algoritmanızı" hızlandırabilir ve basitleştirebilirsiniz (ve bu konuda size sürekli söylenir). Deal dizisinin karşılık gelen numaralandırmasıyla istenen sihirli dizini arayın. Daha hızlı olacak. Tabii ki, bu sizin örneğinize göre özel bir durum.


İlginç ve mantıklı bir öneri. Paralel kayıtların tutulması. Bunu diğer çözümlerde yaptım.

Tek şey, başlangıçta danışmanın vereceğisiparişlerin sayısını bilmememizdir. Bir int dizisinin boyutu nedir?

Bu yüzden hattı almaya karar verdim.

 
fxsaber :

Bu önden bir çözümdür ve bu nedenle en hızlısı değildir. HashMap aracılığıyla yapmak daha iyidir. Ancak mevcut uygulamada, bir yapıya değil, emirlerinin alanlarını tanımlamak için belirli bir arayüzden miras alınan bir sınıfa ihtiyaç duyacaktır.


Generic dosyasını bulamadım bile, nedeni eski yapı gibi görünüyor. Peki, ördek, ama navigasyon ilkesi nasıl sağlanacak - kaynak kodu nedir?

 
Реter Konow :

İlginç ve mantıklı bir öneri. Paralel kayıtların tutulması. Bunu diğer çözümlerde yaptım.

Tek şey, başlangıçta danışmanın vereceğisiparişlerin sayısını bilmememizdir. Bir int dizisinin boyutu nedir?

Bu yüzden hattı almaya karar verdim.

Peter, ArrayResize() adında harika bir fonksiyon var. Program yürütülürken dizinin boyutunu artırmanıza olanak tanır.