최적화를 위한 CPU 코어 평가 - 페이지 11

 
Aleksey Vyazmikin :

어떤 효과로 인해 문제가 발생합니다. 실제로 "if"가 제거된 코드를 확실히 보았습니까? 다만, 논리의 가속도가 높아진 이유가 무엇인지 불명확해서 댓글을 달고 싶습니다.

직관적인 솔루션은 큰 코드를 함수로 옮기고(별도의 include에서 훨씬 더 나을 것입니다) if, increment 및 break를 제거하는 것입니다.

나는 여전히 분석된 변수의 값을 얻어서 매우 혼란스럽다. 테스트 예제에서는 무작위이지만 실제로는? 나는 이미 순수한 부울 값을 거기에 남겨둘 것이므로 나중에 (double_a > 10.0) 대신 (bool_a)를 확인합니다.

 
Igor Zakharov :

새 빌드, 새 테스터, 새 컴파일러... "MT5 빌드" 열이 피벗 테이블에 없습니다.

결과는 안정적이지만 어제 확인했기 때문에 빌드에서 빌드로의 성능 향상을 기대해서는 안 됩니다.

 
Andrey Khatimlianskii :

직관적인 솔루션은 큰 코드를 함수로 옮기고(별도의 include에서 훨씬 더 나을 것입니다) if, increment 및 break를 제거하는 것입니다.

사실 이것은 이미 함수이기 때문에 이러한 성능 향상이 어디에서 오는지 명확하지 않습니다!

나는 작업 코드에 포함을 사용하지만 이것은 순전히 코드 전송이지만 그것을 구성하는 방법을 제안합니까? Bray는 성능을 크게 추가합니다. 속도를 잃지 않도록 성능을 제거하는 방법은 무엇입니까?

안드레이 카팀리안스키 :

나는 여전히 분석된 변수의 값을 얻어서 매우 혼란스럽다. 테스트 예제에서는 무작위이지만 실제로는? 나는 이미 순수한 부울 값을 거기에 남겨둘 것이므로 나중에 (double_a > 10.0) 대신 (bool_a)를 확인합니다.

실제로는 이중이기도 합니다. 데이터는 초기화 중에 버퍼로 완전히 읽혀지는 외부 파일에서 가져옵니다. 따라서 bool을 만드는 방법을 정확히 이해하지 못했습니다.

 
Maxim Romanov :
3800x는 성능 면에서 i7 8700을 거의 따라잡았고 2700에서 벗어났습니다.
이것은 아마도 메모리와 두 배의 캐시로 작업할 때 대기 시간이 줄어들었기 때문일 수 있습니다.
결론: MT5의 경우 결정적인 요소는 메모리 액세스 지연과 메모리 읽기 속도입니다.
이것은 2990 wx 스트림의 낮은 성능으로도 확인됩니다. 4번째 채널과 특정 캐시 작업 에도 불구하고 메모리 지연이 큽니다.
즉, 코어 자체의 속도는 그다지 중요하지 않습니다.
어쩌면 그렇게 작동합니다.

그리고 3800X는 2700에서 떨어져 나가지 말았어야 했다?

 
Aleksey Vyazmikin :

그런 다음 최적화하는 동안 단순히 이념에 따라 빈도가 떨어지는 것으로 가정합니다. 관심을 끌기 위해 어드바이저의 실행을 더 길게 만드십시오. 16 패스가 아니라 160 패스입니다. 패스 시간이 1초 이내에 어떻게 변경되는지는 흥미롭습니다. 차이는 최소화되어야 합니다.

에프


추신 그리고 아마도 당신은 RAM이로드되는 테스트가 있습니까?

 
Pavel Verveyko :

에프


추신 그리고 아마도 당신은 RAM이로드되는 테스트가 있습니까?

감사합니다. 평균 수치는 대략 16개의 패스와 일치합니다. 이것이 올바른 데이터라고 가정하겠습니다.

불행히도 메모리의 경우 공개 도메인에 적합한 것이 없습니다.

 
Pavel Verveyko :

그리고 3800X는 2700에서 떨어져 나가지 말았어야 했다?

앞으로 철을 고를 때 무엇인가에 의지하기 위해, 나는 그 이유를 제시했다.
 
Maxim Romanov :
앞으로 철을 고를 때 무엇인가에 의지하기 위해, 나는 그 이유를 제시했다.

덕분에 이해했습니다.

 
Aleksey Vyazmikin :

Bray는 성능을 크게 추가합니다. 속도를 잃지 않도록 성능을 제거하는 방법은 무엇입니까?

내 예에서와 같이 반품으로 교체하십시오.


알렉세이 비아즈미킨 :

실제로는 이중이기도 합니다. 데이터는 초기화 중에 버퍼로 완전히 읽혀지는 외부 파일에서 가져옵니다. 따라서 bool을 만드는 방법을 정확히 이해하지 못했습니다.

대신에

 int Povtor_High_M1 = X;

if ( Povtor_High_M1>= 0 ) ***

if ( Povtor_High_M1< 0 ) ***

하다

 bool Povtor_High_M1 = (X >= 0 );

if ( Povtor_High_M1 ) ***

if ( !Povtor_High_M1 ) ***
 
Andrey Khatimlianskii :

내 예에서와 같이 반품으로 교체하십시오.


대신에

하다

불행히도 저는 바보입니다. 그러나 같은 위치에서 X>=0은 다른 어떤 숫자보다 클 수 있습니다. 많은 조합이 있습니다. 코드에서 모든 것을 예측할 수 없으며, 조합.