x64 platformları için yeni MQL5 derleyicisinin test edilmesi - hesaplamaların 2'den 10'a hızlandırılması! - sayfa 20

 
Denis Kirichenko :

Mantığı optimize edin. Örneğin, diziler ve döngülerle çalışın. Ölçüt değerlerini bir dizide paketlemeye çalışın. Ve bir döngüde yapılacak kontroller. Belki o zaman 74 bin vakaya olan ihtiyaç ortadan kalkar...

Tabii ki, teoride her satırı uzun bir hash ile oluşturmak ve sadece bu hashleri aktarmak ve sonra ondan her şeyi üretmek mümkündür - ama bunun hızlı olacağından emin değilim ve görev kolay değil ...

 
Alexey Kozitsyn :

1. Oradaki kodda en "frenlenen" yerleri göreceksiniz. Yine de ... hala bir soru, derlemeyi etkileyip etkilemediği ...

2. Dilediğiniz gibi: davayı yapabilirsiniz. Ayrıca, onu küçük işlevlere ayırmanız tavsiye edildi. Onu kır ve kontrol et. Evet tabi ki kod daha da artacak. Peki ne yapmalı.

Ancak uygulamada kodu işlevlere dönüştürdüm.

Derlemeden sonra önceki kodun 14428 kb ve yeni 9447 kb'yi işgal etmesi hemen dikkat çekiyor - 5 megabaytlık fark zaten şaşırtıcı - nereden geliyor!?

Derleme hızında daha ileri, eski sürüm

 0 error(s), 0 warning(s), 2109302 msec elapsed

Yeni sürüm

 0 error(s), 0 warning(s), 386131 msec elapsed

Yeni sürüm 5.46 kat daha hızlı derleniyor!

Ancak hız açısından önceki sürüm:

 2019.10 . 15 14 : 35 : 47.593 Core 1   pass 0 returned result 1001000.000000 in 0 : 00 : 29.555
2019.10 . 15 14 : 35 : 47.595 Core 3   pass 4 returned result 1001000.000000 in 0 : 00 : 29.490
2019.10 . 15 14 : 35 : 47.605 Core 2   pass 2 returned result 1001000.000000 in 0 : 00 : 29.540
2019.10 . 15 14 : 35 : 47.641 Core 4   pass 6 returned result 1001000.000000 in 0 : 00 : 29.541
2019.10 . 15 14 : 36 : 15.511 Core 2   pass 3 returned result 1001000.000000 in 0 : 00 : 27.907
2019.10 . 15 14 : 36 : 15.523 Core 1   pass 1 returned result 1001000.000000 in 0 : 00 : 27.932
2019.10 . 15 14 : 36 : 15.535 Core 3   pass 5 returned result 1001000.000000 in 0 : 00 : 27.942
2019.10 . 15 14 : 36 : 15.537 Core 4   pass 7 returned result 1001000.000000 in 0 : 00 : 27.897
2019.10 . 15 14 : 36 : 15.537 Tester  optimization finished, total passes 8
2019.10 . 15 14 : 36 : 15.547 Statistics      optimization done in 0 minutes 58 seconds
2019.10 . 15 14 : 36 : 15.547 Statistics      shortest pass 0 : 00 : 27.897 , longest pass 0 : 00 : 29.555 , average pass 0 : 00 : 28.725
2019.10 . 15 14 : 36 : 15.547 Statistics       8000 frames ( 3.14 Mb total, 412 bytes per frame) received
2019.10 . 15 14 : 36 : 15.547 Statistics      local 8 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)

Yeni sürüm

 2019.10 . 15 14 : 33 : 51.458 Core 3   pass 6 returned result 1001000.000000 in 0 : 01 : 01.840
2019.10 . 15 14 : 33 : 51.485 Core 2   pass 4 returned result 1001000.000000 in 0 : 01 : 01.867
2019.10 . 15 14 : 33 : 51.521 Core 1   pass 2 returned result 1001000.000000 in 0 : 01 : 01.903
2019.10 . 15 14 : 33 : 51.524 Core 4   pass 0 returned result 1001000.000000 in 0 : 01 : 01.906
2019.10 . 15 14 : 34 : 18.802 Core 3   pass 7 returned result 1001000.000000 in 0 : 00 : 27.346
2019.10 . 15 14 : 34 : 18.837 Core 2   pass 5 returned result 1001000.000000 in 0 : 00 : 27.354
2019.10 . 15 14 : 34 : 18.892 Core 4   pass 1 returned result 1001000.000000 in 0 : 00 : 27.370
2019.10 . 15 14 : 34 : 18.922 Core 1   pass 3 returned result 1001000.000000 in 0 : 00 : 27.403
2019.10 . 15 14 : 34 : 18.922 Tester  optimization finished, total passes 8
2019.10 . 15 14 : 34 : 18.932 Statistics      optimization done in 1 minutes 29 seconds
2019.10 . 15 14 : 34 : 18.932 Statistics      shortest pass 0 : 00 : 27.346 , longest pass 0 : 01 : 01.906 , average pass 0 : 00 : 44.623
2019.10 . 15 14 : 34 : 18.932 Statistics       8000 frames ( 3.14 Mb total, 412 bytes per frame) received
2019.10 . 15 14 : 34 : 18.932 Statistics      local 8 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)

Ve burada, ajanların (4 ajan) ilk geçişinin çok yavaş olduğunu görebilirsiniz - birçok kez denedim - sonuç sabit, ancak günlükte

 2019.10 . 15 14 : 38 : 07.002 Tester   OnTesterInit works too long ...

Bunun sebebi nedir şimdi, belki @Renat Fatkhullin veya @Slava size neden böyle bir etkinin olduğunu söyler?

Dosyalar:
 
Andrey Khatimlianskii :

Dosyayı bir zip ile sıkıştırın. Zip'i okuyun, içindekileri açın. 500 MB'lık bir danışman göndermekten daha hızlı olacaktır (her temsilciye de gönderilir).

O zaman her yeni geçişte yeniden açılmaz mı?

Ve bir dosyadan okumak tek seferlik bir aktarımdan daha hızlı mı olacak ....

 
Aleksey Vyazmikin :

Her yeni geçişte yeniden açılmaz mı?

Ve bir dosyadan okumak tek seferlik bir aktarımdan daha hızlı mı olacak ....

Evet, optimize ederken daha yavaş olabilir.. Ama kontrol ediyorum, bunun için her şey hazır.

 
Andrey Khatimlianskii :

Evet, optimize ederken daha yavaş olabilir.. Ama kontrol ediyorum, bunun için her şey hazır.

Tam olarak ne hazır - anlamadım.

 
Aleksey Vyazmikin :

Tam olarak ne hazır - anlamadım.

Zip arşivleriyle çalışma.

 
Andrey Khatimlianskii :

Zip arşivleriyle çalışma.

Evet, gerçekte nasıl çalıştığını gördüm ama denemedim.

Burada, daha çok, benim için sorun büyük ölçüde bu verilerin hazırlanmasında, yani. kodu bir tabloya çevirmek - ilk verileri tekrar işlemek gerekecek ...

 
Ne yazık ki, derleyicinin büyük kodlarla baş edemediği ortaya çıktı - "EX5 yazma hatası" hatası aldım - başka hata yok. Kullanım kılavuzundaki sınırlamalar hakkında yazmak güzel olurdu!
 
Danışmanın halka açık bir versiyonunu yaptım, şimdi derlenip derlenmediğini kontrol ediyorum - süreç hızlı değil, ancak şimdi kodun% 46'sının derlendiği ve 36 gigabayt RAM'in zaten olduğu görülüyor. yenilmiş...
 
Aleksey Vyazmikin :
Danışmanın halka açık bir versiyonunu yaptım, şimdi derlenip derlenmediğini kontrol ediyorum - süreç hızlı değil, ancak şimdi kodun% 46'sının derlendiği ve 36 gigabayt RAM'in zaten olduğu görülüyor. yenilmiş...

Lütfen araştırmam için kodu sağlayın.
Neden bu kadar yavaş derlendiğini ve çok fazla bellek tükettiğini kontrol edeceğim.