Hatalar, hatalar, sorular - sayfa 2276

 

Büyük bir dizinin bir bölümünü tek bir Z değeriyle doldurmam gerektiğinde, yapıyı kullanırım:

 ArrayInitialize (ar,Z);     // промежуточный массив размер массива ar = 1000 
ArrayCopy (arr,ar, 5000 );     // основной массив заполняется значением Z c 5000 по 5999 элемент


Birçoğu diyecek - neden bu kadar zor, çünkü daha kolay olabilir:

 ArrayFill (arr,5000,1000,Z);

Ancak bilinmeyen bir nedenle, bir ara dizi kullanan ilk seçenek, ikincisinden belirgin şekilde daha hızlıdır.

 2018.09 . 04 11 : 01 : 17.222 TestArrayFill (EURUSD,M4)       Время заполнения через ArrayFill = 338
2018.09 . 04 11 : 01 : 17.222 TestArrayFill (EURUSD,M4)       Время заполнения через ArrayInitialize + ArrayCopy = 111
2018.09 . 04 11 : 01 : 18.563 TestArrayFill (EURUSD,M4)       Время заполнения через ArrayFill = 301
2018.09 . 04 11 : 01 : 18.563 TestArrayFill (EURUSD,M4)       Время заполнения через ArrayInitialize + ArrayCopy = 122
2018.09 . 04 11 : 01 : 19.717 TestArrayFill (EURUSD,M4)       Время заполнения через ArrayFill = 334
2018.09 . 04 11 : 01 : 19.717 TestArrayFill (EURUSD,M4)       Время заполнения через ArrayInitialize + ArrayCopy = 142
2018.09 . 04 11 : 01 : 21.095 TestArrayFill (EURUSD,M4)       Время заполнения через ArrayFill = 364
2018.09 . 04 11 : 01 : 21.095 TestArrayFill (EURUSD,M4)       Время заполнения через ArrayInitialize + ArrayCopy = 156

Birkaç yıl önce, bu konuda SD'de zaten yazmıştım. Teşekkürler, sorun bulundu ve düzeltildi diye bir cevap aldım, bir sonraki derlemede iyi olacak.

Ama sorun devam ediyor.

Ve MT4'teki aynı test:

 2018.09 . 04 11 : 08 : 21.258 TestArrayFill EURUSD,H1: Время заполнения через ArrayInitialize + ArrayCopy = 113
2018.09 . 04 11 : 08 : 21.258 TestArrayFill EURUSD,H1: Время заполнения через ArrayFill = 78
Dosyalar:
 
Nikolai Semko :

Büyük bir dizinin bir bölümünü tek bir Z değeriyle doldurmam gerektiğinde, yapıyı kullanırım:


Birçoğu diyecek - neden bu kadar zor, çünkü daha kolay olabilir:

Ancak bilinmeyen bir nedenle, bir ara dizi kullanan ilk seçenek, ikincisinden belirgin şekilde daha hızlıdır.

Birkaç yıl önce, bu konuda SD'de zaten yazmıştım. Teşekkürler, sorun bulundu ve düzeltildi diye bir cevap aldım, bir sonraki derlemede iyi olacak.

Ama sorun devam ediyor.

Ve MT4'teki aynı test:

Bunu belirtmeye değer olabilir mi?

 
Artyom Trishkin :

Bunu belirtmeye değer olabilir mi?

Vay özelliği ve incelik!
Dünyanın en hızlı algoritmik ticaret dilinin dizileriyle çalışmanın önemli bir standart işlevi, eski MQL4 dilinden 4 kat daha yavaş çalışır.
Sadece burada.

Bariz barınak.
Düzeltildiğinde kaç programın çöktüğünü hayal edin.
 
Nikolai Semko :

Vay özelliği ve incelik!
Dünyanın en hızlı algoritmik ticaret dilinin dizileriyle çalışmanın önemli bir standart işlevi, eski MQL4 dilinden 4 kat daha yavaş çalışır.
Sadece burada.

Bariz barınak.
Düzeltildiğinde kaç programın çöktüğünü hayal edin.

İyi.

Ama şu anda bir özellik olarak - kötü mü?
 
Artyom Trishkin :

İyi.

Ama şu anda bir özellik olarak - kötü mü?
Evet, sorunu yanlış anlamış olmalıyım. Sanki onun kararından bahsediyor gibiydim.
Tabii ki değil. Sorunu tam olarak formüle etmeye çalıştım. Ara dizili seçenek, soruna hiç bir çözüm değil, çünkü bu, bellek yönetimi mantığına göre olması gerekenden daha uzun sürer ve ayrıca ek bellek tüketimine yol açar.
 
Artyom Trishkin :

İyi.

Ama şu anda bir özellik olarak - kötü mü?

Şaka.

Yaşlı adam doktora gelir. Konuşur:

Doktor, sırtım ağrıyor.

- Hadi, eğil. Acıtmak?

- Acıtmak.

- Daha sert bükün!

- Oh, yani, daha kolay görünüyor ...

- Burada! O zaman git!

))))))

 
Nikolai Semko :

Büyük bir dizinin bir bölümünü tek bir Z değeriyle doldurmam gerektiğinde, yapıyı kullanırım:


Birçoğu diyecek - neden bu kadar zor, çünkü daha kolay olabilir:

Ancak bilinmeyen bir nedenle, bir ara dizi kullanan ilk seçenek, ikincisinden belirgin şekilde daha hızlıdır.

Anlayamıyorum! Neden büyük bir dizinin bir kısmını bir Z değeriyle doldurma zahmetine girdiniz? Veya diziye hangi verileri ne amaçla ataıyorsunuz? Kapat, AVG, RSI değerleri? Ama göstergeyi yükledikten sonra MetaTrader'ın belleğinde yoklar mı? Burada bir şekilde büyük bir 0 1 dizisine zahmetsizce dokundum ve sonunda SOS kelimesini aldım. S değerine 0 ve O değerine 1 atayarak. Elbette, dizinin ikinci boyutunda daha iyi bir sonuç için Yardım'a dokunabilirsiniz. Ardından her bir dizi boyutunun doldurma süresini kontrol edin. Sonra hepsini toplayın ve 4'e bölün.
 
Bob1Thec :
Anlayamıyorum! Neden büyük bir dizinin bir kısmını bir Z değeriyle doldurma zahmetine girdiniz? Veya diziye hangi verileri hangi amaçla ataıyorsunuz?
Bir resmin düz arka planı (saydamlık dahil) bu şekilde yapılır.
 
fxsaber :
Bir resmin düz arka planı (saydamlık dahil) bu şekilde yapılır.

daha kesin olarak gradyan arka planı

 
Nikolai Semko :

daha kesin olarak gradyan arka planı

Diziyi tek bir değerle doldurmanın burada oynanacağını hayal etmiyorum.