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

 
Alexandr Andreev :

Normal bir dizi dizi neden uygun değil? neden o terlikler...

Çünkü danışmanın kaç işlem yapacağını önceden bilemeyiz. Dizi için önceden bellek ayırmamız gerekiyor, ancak ne kadar olduğunu bilmiyoruz.

Bu nedenle hem hızlı hem kısa hem de fazladan bellek kaplamayan bir çözüm bulmak gerekiyordu.

 
Реter Konow :

Tam olarak değil.

...

Yine, neden bahsettiğimi anlamıyorsun. Ticaret numarası, ticaret sistemi (MetaTrader veya borsa) tarafından atanır. Anlaşma numarası, anlaşmanın sipariş numarası değil , HistoryDealGetTicket işlevi tarafından döndürülen bileti anlamına gelir. Bunu akılda tutarak, örneğinizi yeniden oluşturun.
 
Alexandr Andreev :

Tekrar ediyorum, bir dize yerine dinamik bir grafik dizisinin depolandığı bir sınıf kullandığınızı hayal edin - sizce bu hızlı mı?

Dize işlevlerinin dahili uygulamasını bilmiyorum, ancak işlev yürütme hızının ölçülmesi, toplam binlerce sihirbaz dizisinden bir sihirbaz bulma ve döndürme süresinin 100 mikrosaniyeden az sürdüğünü gösteriyor.

Bana göre çok hızlı. Daha hızlı yapılması pek mümkün değil.

 
Реter Konow :

Çünkü danışmanın kaç işlem yapacağını önceden bilemeyiz. Dizi için önceden bellek ayırmamız gerekiyor ama ne kadar olduğunu bilmiyoruz.

Bu nedenle hem hızlı hem kısa hem de fazladan bellek kaplamayan bir çözüm bulmak gerekiyordu.

Oruç pahasına. Tüm 24.000 Medjik'in çıkarma oranını ölçün. Hoş olmayan bir şekilde şaşırttı.

 
Реter Konow :

Hazır:

Örneğiniz düzeltilemez :)

Yeterli satır boyutunuz yoksa ne olur?

Örneğinizde 32767 kayıt (işlem) olabilir, bu nedenle son kaydedilen ve okunan sihri karşılaştırmaya çalışın.


 
Vasiliy Sokolov :
Yine, neden bahsettiğimi anlamıyorsun. Ticaret numarası, ticaret sistemi (MetaTrader veya borsa) tarafından atanır. Anlaşma numarası anlaşmanın sipariş numarası değil , HistoryDealGetTicket işlevi tarafından döndürülen bileti anlamına gelir. Bunu akılda tutarak, örneğinizi yeniden oluşturun.

Problem değil. Yarın biletle çalışacak ikinci seçeneği yapacağım.

Bu seçenek ticarette de uygundur.

 
Vasiliy Sokolov :

Oruç pahasına. Tüm 24.000 Medjik'in çıkarma oranını ölçün. Hoş olmayan bir şekilde şaşırttı.

Her an bir sihirbaza ihtiyacımız var, değil mi?

Magic'i çıkarırız, siparişle ilgili her türlü bilgiye erişiriz.

Neden bir kerede 24.000 Medzhik çıkaralım?

 

Kahretsin, burada ne işim var!? Zamanımı kimin için harcıyorum? Gidip daha sert bir şeyler içsem iyi olur.

ps Ah, evet, başka bir hatanız var. Üçüncü aramada MathRand , örneğin 1000 sayısını döndürür ve _3_1000_ yazarsa, seri numarası 1000 olan işlemde hangi sihir bulunacak?
 
Yury Kulikov :

Örneğiniz düzeltilemez :)

Yeterli satır boyutunuz yoksa ne olur?

Örneğinizde 32767 kayıt (işlem) olabilir, bu nedenle son kaydedilen ve okunan sihri karşılaştırmaya çalışın.


Satır uzunluğu sınırını belirttiğiniz için teşekkür ederiz.

İkinci satırı yazmaya başlayabilirsiniz. Sonra üçüncü ve benzeri... :)

 
Реter Konow :

Dize işlevlerinin dahili uygulamasını bilmiyorum, ancak işlevin yürütme hızını ölçmek, toplam binlerce sihirbaz dizisinden bir sihirbaz bulma ve döndürme süresinin 100 mikrosaniyeden az sürdüğünü gösteriyor.

Bana göre çok hızlı. Daha hızlı yapılması pek mümkün değil.


Özetle, bir karakterden oluşan bir dize, 0 ila 255 arasında belirli bir koda sahip bir karakterdir ve 1 bayt ağırlığındadır ... ve bunun için yalnızca 256 değer olacak şekilde çok fazla bellek ayrılmıştır, 257 sığmaz orada, ilkine geri dönecek.

Evet, herhangi bir dizgede, her karakter 0 ile 255 arasında bir sayıya eşittir ... int 10000000 sayısını alırız - 4 bayt ağırlığındadır, "10000000" dizesine çevirir ve ardından her karakter için tek bir grafik olarak bellek ayırır 0'dan 255'e. .. toplam 8 bayt Hafızayı kaydetmeye yakın hiçbir yer yok