Obur bellek RAM MT5, büyük dosyaları okuma / yazma ile ilgili sorunlar - sayfa 7

 
Komut dosyası olmayan terminalimin 820mb tükettiği ortaya çıktı, bu da ikili dosyanın 180 megabayt yediği anlamına geliyor, bu da iki dolu dizi göz önüne alındığında görünüşte normal.
 
Konu iyi tanımlanmamış.

Bellek, terminal tarafından değil, belirli bir uygulamaya sahip belirli bir program tarafından tüketilir. Bu durumda, MQL programı verileri yanlış ve verimsiz bir şekilde depolar.
 
Aleksey Vyazmikin :

İçinde ne düzelteceğimi söyler misin?

peki, orada her şey yolunda, ilk başta dizi okunur, sadece okuduktan sonra dosya kapatılmalıdır

ve lib'iniz aracılığıyla değil, aynı şekilde yazın

 
Renat Fatkhullin :
Konu iyi tanımlanmamış.

Bellek, terminal tarafından değil, belirli bir uygulamaya sahip belirli bir program tarafından tüketilir. Bu durumda, MQL programı verileri yanlış ve verimsiz bir şekilde depolar.

Konu, nedenler hakkında nihai bir anlayış olmadığında, problem zamanında formüle edildi. Bir MQ çalışanının katılımıyla oluşturulmuş bir sınıfım olduğu gerçeğinden yola çıktım, bu da çalışmasının doğruluğundan şüphe etmek için hiçbir nedenim olmadığı anlamına geliyor.

Program verileri yanlış ve verimsiz bir şekilde depoluyorsa, lütfen bana bunları nasıl doğru ve verimli bir şekilde depolayacağımı söyler misiniz? Daha az bellek tüketmesi için sınıfta nelerin değiştirilmesi gerekiyor?

Genel olarak, CSV'ye dayalı tablolarla çalışmak için terminalin teslimatıyla birlikte benzer bir sınıfın gelmesi çok iyi olurdu.

 
Maxim Dmitrievsky :

peki, orada her şey yolunda, ilk başta dizi okunur, sadece okuduktan sonra dosya kapatılmalıdır

ve lib'iniz aracılığıyla değil, aynı şekilde yazın

Yakın hakkında - iyi yakın, teşekkür ederim.

CSV formatı dizilerde neler olduğunu gerçekten görmeye yardımcı olduğu için iki versiyonda yazmanız gerekiyor - ne yazık ki, hatalar yapıyorum ve bu nedenle kodun hatalarını ayıklarken yanlış çizmektense Excel'deki hesaplamaları iki kez kontrol etmek benim için daha iyi sonuçlar daha sonra.

 
Vladimir :

Farklı programlarda yaratılan ve rastgele bir boyuta sahip olan .csv belleğe kaldırma sorunu olduğunda, bu durumda yararlı olan üçüncü parametre hakkında belgelerden ne elde etmeyi başardınız?

Belleği yeniden tahsis etme performansını artıran ( ArrayResize çağrılarını azaltır) ikili aramadan daha fazla geliştiren daha iyi, saçma sapan olmayan bir değişiklik önermekten çekinmeyin...

Yeni başlayanlar için ücretsiz ders:

Üçüncü parametre ArrayResize, dizinin gerçek boyutunu, bu sayının bir katı olarak belirtir.

ArrayResize(dizi, 5, 1000) - bellekte 1000 eleman alacaktır.

ArrayResize(dizi, 1005, 1000) - bellekte 2000 eleman alacaktır.

Bu nedenle, kalıcı bellek ayırma yoktur.

 
Aleksey Vyazmikin :

Konu, nedenler hakkında nihai bir anlayış olmadığında, problem zamanında formüle edildi. Bir MQ çalışanının katılımıyla oluşturulmuş bir sınıfım olduğu gerçeğinden yola çıktım, bu da çalışmasının doğruluğundan şüphe etmek için hiçbir nedenim olmadığı anlamına geliyor.

Program verileri yanlış ve verimsiz bir şekilde depoluyorsa, lütfen bana bunları nasıl doğru ve verimli bir şekilde depolayacağımı söyler misiniz? Daha az bellek tüketmesi için sınıfta nelerin değiştirilmesi gerekiyor?

Genel olarak, CSV'ye dayalı tablolarla çalışmak için terminalin teslimatıyla birlikte benzer bir sınıfın gelmesi çok iyi olurdu.

Sorun sınıfta değil, bu sınıfın kullanımında.

Ve genel olarak, CSV'den okuma, FILE_CSV bayrağıyla FileOpen düzeyinde zaten uygulanmaktadır.

Bunun için ayrı bir sınıfa ihtiyacınız yok.

 
Roffild :

Yeni başlayanlar için ücretsiz ders:

Üçüncü parametre ArrayResize, dizinin gerçek boyutunu, bu sayının bir katı olarak belirtir.

ArrayResize(dizi, 5, 1000) - bellekte 1000 eleman alacaktır.

ArrayResize(dizi, 1005, 1000) - bellekte 2000 eleman alacaktır.

Bu nedenle, kalıcı bellek ayırma yoktur.

Vladimir, senin aksine, kodu analiz edebildi ve onu hızlandırmanın bir yolunu buldu. Ve burada kendinizi başka birinin koduyla nasıl çalışacağını bilmeyen bir teorisyen olarak konumlandırıyorsunuz. Tüm bu bölmeler - peki, ne veriyorlar, ek parametreler eklemenin işi hızlandıracağını veya bellek tüketimini azaltacağını gösterebilir misiniz?


Roffield :

Sorun sınıfta değil, bu sınıfın kullanımında.

Ve genel olarak, CSV'den okuma, FILE_CSV bayrağıyla FileOpen düzeyinde zaten uygulanmaktadır.

Bunun için ayrı bir sınıfa ihtiyacınız yok.

Bunun neden gerekli olduğunu anlamıyorsanız, neden başkaları için karar veriyorsunuz? İnsanlara kolaylık sağlamak için yapılması gerekenleri söylüyorum, bunun için dersler yazılıyor.

 
Aleksey Vyazmikin :

Vladimir, senin aksine, kodu analiz edebildi ve onu hızlandırmanın bir yolunu buldu. Ve burada kendinizi başka birinin koduyla nasıl çalışacağını bilmeyen bir teorisyen olarak konumlandırıyorsunuz. Tüm bu bölmeler - peki, ne veriyorlar, ek parametreler eklemenin işi hızlandıracağını veya bellek tüketimini azaltacağını gösterebilir misiniz?

Aslında Vladimir yaptığı kurguyla dersi hızlandıramadı. Sınıf bir "MQ çalışanı" tarafından oluşturuldu ve belgeleri okumayan bir kullanıcı sınıfı geliştirmeyi başardı mı?

Alexey Vyazmikin :

Bunun neden gerekli olduğunu anlamıyorsanız, neden başkaları için karar veriyorsunuz? İnsanlara kolaylık sağlamak için yapılması gerekenleri söylüyorum, bunun için dersler yazılıyor.

Yani standart işlevleri kullanmak için bunları sınıflara sarmak gerekli mi?

Belki de tamamen ayrı bir sınıf kullanmak yerine FILE_CSV belgelerini okumalısınız?

Göz ardı edilen başka hazır çözümler zaten yayınlandı.

Sütun sayısında sınırlama olmaksızın CSV'ye yazma çözümüm kitaplığımda. OOP ilkelerine bile (bu programlama yöntemine aşina olmanız pek olası değildir) uyulur. Ama tavsiye etmeyeceğim.

Doğru çözümün burada ücretsiz olarak ortaya çıkması pek olası değildir ...

 
Roffild :

Aslında Vladimir yaptığı kurguyla dersi hızlandıramadı. Sınıf bir "MQ çalışanı" tarafından oluşturuldu ve belgeleri okumayan bir kullanıcı sınıfı geliştirmeyi başardı mı?

Kontrol ettiniz ve hızlanma bulamadınız mı? Yoksa burada herkesi yanılttığımı mı söylüyorsunuz?

Roffield :

Yani standart işlevleri kullanmak için bunları sınıflara sarmak gerekli mi?

Belki de tamamen ayrı bir sınıf kullanmak yerine FILE_CSV belgelerini okumalısınız?

Göz ardı edilen başka hazır çözümler zaten yayınlandı.

Sütun sayısında sınırlama olmaksızın CSV'ye yazma çözümüm kitaplığımda. OOP ilkelerine bile (bu programlama yöntemine aşina olmanız pek olası değildir) uyulur. Ama tavsiye etmeyeceğim.

Doğru çözümün burada ücretsiz olarak ortaya çıkması pek olası değildir ...

Konuyu dikkatli okuyor musun? Fonksiyon şeklinde hazır bir çözüme verdiğim cevabı gördünüz mü? Başka bir çözümünüz var mı? OOP nedir bilmiyorum tabi ki şubeyi dikkatli okuyan biri bunu hemen fark eder...

Ücretli / ücretsiz hakkında - bu zaten saçma, ücretli çözümlerin ücretsiz olandan daha iyi bir çözüm yapmadığını gösterdim ve yine paradan bahsediyorsunuz ...