Optimizasyon için CPU Çekirdeklerini Değerlendirme - sayfa 11

 
Aleksey Vyazmikin :

Soru, hangi etkiden dolayı ortaya çıkıyor - koddan kesinlikle "eğer" in kaldırıldığını gördüm? Ama bir yorum yapmak istiyorum çünkü mantığı hızlandırma anlamındaki artışın sebebi ne olduğu belli değil.

Sezgisel bir çözüm, büyük kodu bir işleve taşımaktır (ayrı bir içermede daha iyi olurdu), if, artış ve kırılmadan kurtulmak.

Analiz edilen değişkenlerin değerlerini alarak hala kafam çok karıştı. Test örneğinde bunlar rastgele ama gerçekte? Orada zaten saf boole değerleri bırakırdım, böylece daha sonra (double_a > 10.0) yerine kontrol edin (bool_a).

 
Igor Zakharov :

Yeni yapı, yeni test cihazı, yeni derleyici... pivot tabloda "MT5 yapı" sütunu eksik

Sonuç sabit olsa da - Dün kontrol ettim, bu yüzden derlemeden derlemeye performans atlamaları beklememelisiniz.

 
Andrey Khatimlianskii :

Sezgisel bir çözüm, büyük kodu bir işleve taşımaktır (ayrı bir içermede daha iyi olurdu), if, artış ve kırılmadan kurtulmak.

Aslında bu zaten bir fonksiyon, yani böyle bir performans kazancının nereden geldiği belli değil!

Çalışma kodunda içermeyi kullanıyorum, ancak bu tamamen bir kod aktarımı, ancak bunu nasıl düzenlemeyi düşünüyorsunuz? Bray, performansı önemli ölçüde artırır - hız kaybetmemek için ondan nasıl kurtulur?

Andrey Khatimliansky :

Analiz edilen değişkenlerin değerlerini alarak hala kafam çok karıştı. Test örneğinde bunlar rastgele ama gerçekte? Orada zaten saf boole değerleri bırakırdım, böylece daha sonra (double_a > 10.0) yerine kontrol edin (bool_a).

Gerçekte, aynı zamanda bir çifttir - veriler, başlatma sırasında tamamen arabelleğe okunan harici bir dosyadan alınır. Bu nedenle, onlardan nasıl bool yapılacağını tam olarak anlamadım.

 
Maxim Romanov :
3800x performans olarak neredeyse i7 8700'ü yakaladı ve 2700'den koptu.
Bunun nedeni muhtemelen bellekle çalışırken gecikme süresinin azalması ve önbelleğin iki katı olmasıdır.
Sonuç: MT5 için belirleyici faktör belleğe erişimdeki gecikmeler ve bellekten okuma hızıdır.
Bu aynı zamanda 2990 wx akışındaki düşük performansla da doğrulanır. 4. kanala ve önbellekle özel çalışmalara rağmen büyük bellek gecikmeleri var.
Yani, çekirdeklerin hızı o kadar önemli değil.
Belki de böyle çalışır.

ve 3800X'in 2700'den kopmaması gerekiyordu?

 
Aleksey Vyazmikin :

O zaman optimizasyon sırasında frekansın ideolojiye göre düştüğünü varsayacağım. İlgi uğruna, herhangi bir danışmanın koşusunu daha uzun yapın - 16 geçiş değil, diyelim ki 160 - geçiş süresinin burada nasıl değiştiği ilginç - fark minimum olmalı - 1 saniye içinde.

F


PS ve belki de RAM'in yüklendiği bir testiniz var mı?

 
Pavel Verveyko :

F


PS ve belki de RAM'in yüklendiği bir testiniz var mı?

Teşekkürler, ortalama rakam yaklaşık olarak 16 geçişe denk geldi - bunun doğru veri olduğunu varsayacağız.

Hafıza için ne yazık ki, kamuya açık alanda uygun bir şey yok.

 
Pavel Verveyko :

ve 3800X'in 2700'den kopmaması gerekiyordu?

Demir seçerken gelecekte bir şeye güvenmek zorundaydım, sebeplerini önerdim.
 
Maxim Romanov :
Demir seçerken gelecekte bir şeye güvenmek zorundaydım, sebeplerini önerdim.

anladım teşekkürler.

 
Aleksey Vyazmikin :

Bray, performansı önemli ölçüde artırır - hız kaybetmemek için ondan nasıl kurtulur?

Örneğimde olduğu gibi bir iade ile değiştirin.


Alexey Vyazmikin :

Gerçekte, aynı zamanda bir çifttir - veriler, başlatma sırasında tamamen arabelleğe okunan harici bir dosyadan alınır. Bu nedenle, onlardan nasıl bool yapılacağını tam olarak anlamadım.

Yerine

 int Povtor_High_M1 = X;

if ( Povtor_High_M1>= 0 ) ***

if ( Povtor_High_M1< 0 ) ***

Yapmak

 bool Povtor_High_M1 = (X >= 0 );

if ( Povtor_High_M1 ) ***

if ( !Povtor_High_M1 ) ***
 
Andrey Khatimlianskii :

Örneğimde olduğu gibi bir iade ile değiştirin.


Yerine

Yapmak

Ne yazık ki aptalım, ama aynı yerde X>=0 diğer herhangi bir sayıdan daha büyük olabilir - birçok kombinasyon vardır - kodda her şey öngörülemez ve kod, farklı nedenlerden dolayı birçok büyüklük mertebesinde büyüyecektir. kombinasyonlar.

Neden: