MT5 코드 프로파일러 정보 - 페이지 7

 

뭐야?!


 
fxsaber # :

프로파일러는 실제로 존재하지 않았던 함수 호출을 보여줍니다. 나는 심지어 이것에 부딪쳤다.

mqh-file의 소스에 없는 일종의 ArrayCopy! 동시에 정적 배열의 선언을 빨간색 선으로 강조 표시했습니다.

그리고 불행히도 프로파일러를 사용할 수 없습니다.

그리고 객체를 구성, 할당 및 이동할 때(그리고 객체가 있음) 배열이 어떻게 그리고 어떤 방식으로 이동되는지에 대해 생각합니다.

당신은 정말로 프로그램이 당신의 라인으로만 구성되어 있다고 생각합니까?

예제가 완전하지 않습니다.

 
Renat Fatkhullin # :

그리고 객체를 구성, 할당 및 이동할 때(그리고 객체가 있음) 배열이 어떻게 그리고 어떤 방식으로 이동되는지에 대해 생각합니다.

당신은 정말로 프로그램이 당신의 라인으로만 구성되어 있다고 생각합니까?

예제가 완전하지 않습니다.

당신이 지체 없이 이 주제를 다룰 수 있도록 내가 해야 할 일에 대한 명확한 지시를 주십시오.

 
fxsaber # :

당신이 지체 없이 이 주제를 다룰 수 있도록 내가 해야 할 일에 대한 명확한 지시를 주십시오.

이해하지 못하는 주제(컴파일러 및 내부 요소)에 대해 주장하고 있습니다.

지침은 도움이 되지 않습니다. 개체 언어에서 암시적으로 생성된 광대한 코드 의 세계를 이해하기 위해 컴파일러 개발자 과정을 수강하지 않을 것입니다. 고급 언어는 많은 라이브러리와 포함 코드를 사용합니다. 평균적인 WinAPI 프로젝트를 빌드하고 *.map 파일을 살펴보십시오. 수천 개의 도우미 함수가 있으며 그 중 어떤 것이든 프로파일링에 나타날 수 있습니다.

"결과 코드는 코드와 관련이 없으며 최적화되고 내장되고 최적화 컴파일러에 의해 셔플됩니다"라는 말을 수십 번 반복해도 귀에 들어오지 않습니다. 컴파일러의 주요 임무는 코드를 읽을 수 없도록 최대한 빠르게 만드는 것입니다. 프로파일러는 최적화된(실제) 코드에서 실제 병목 현상을 보여야 하며 문자열 일치로 속여서는 안 됩니다.

그에 비해 C++ 코드 프로파일링은 현재로서는 매우 어려운 작업인 경우가 많습니다. 옵티마이저가 일치를 잘 못하기 때문입니다. 그리고 예, Microsoft Visual Studio C++는 표준이 아니며 매우 약하거나 나쁜 코드를 생성합니다. LLVM/Clang의 형태로 경쟁사보다 20-30% 더 나쁩니다.


연구 중인 코드를 변경하지 않는 프로파일러가 있다는 것을 다시 한 번 반복합니다. 검사 시간이 증가하지만 실제로 코드는 내장 카운터로 인해 손상되지 않습니다. 이렇게 하면 코드 최적화가 완전히 중단됩니다.

프로파일링에는 "샘플링" 방법이 사용됩니다. 프로파일러는 MQL 프로그램 작업을 일시 중지하고(초당 최대 1000회) 코드의 특정 섹션에서 일시 중지가 발생한 횟수에 대한 통계를 수집합니다. 포함하여 호출 스택을 분석하여 총 코드 실행 시간에 대한 각 기능의 "기여도"를 결정합니다. 프로파일링이 끝나면 일시 중지된 횟수와 각 함수가 호출 스택에서 종료된 횟수에 대한 정보를 얻습니다.

  • 총 CPU 활동 [단위, %] — 호출 스택에 있는 함수의 총 "모양" 수입니다.
  • CPU 고유 활동 [단위, %] — 지정된 기능 내에서 직접 발생한 "일시 중지"의 수입니다. 이 카운터는 "병목 현상"을 식별하는 데 가장 중요합니다. 통계적으로 중지는 더 많은 프로세서 시간이 필요한 프로그램 부분에서 더 자주 발생하기 때문입니다.



1단계 재현 가능한 예가 없으면 질문을 고려하지 않습니다. 마이크로 작업에 대한 몇 번의 호출로 단순화된 합성은 소요 시간의 백분율이나 총 시간에 대한 기여도 측면에서 고려할 수 없습니다.

 
Renat Fatkhullin # :

이해하지 못하는 주제(컴파일러 및 내부 요소)에 대해 주장하고 있습니다.

나는 당신이 언급한 주제에 대해 전혀 모른다. 프로파일러는 어떤 식으로든 해석할 수 없는 일부 데이터를 표시합니다.

연구 중인 코드에 지연을 거의 도입하지 않는 프로파일러가 있다는 것을 다시 한 번 반복합니다. 검사 시간이 증가하지만 실제로 코드는 내장 카운터로 인해 손상되지 않습니다. 이렇게 하면 코드 최적화가 완전히 중단됩니다.

새 프로파일러로 병목 현상을 확인하려고 합니다. 열심히 노력해도 잘 안되네요.

1단계 재현 가능한 예가 없으면 질문을 고려하지 않습니다. 마이크로 작업에 대한 몇 번의 호출로 단순화된 합성은 소요 시간의 백분율이나 총 시간에 대한 기여도 측면에서 고려할 수 없습니다.

재생 데이터를 누구에게 보내야 합니까? LAN 데이터는 LAN 메시지를 오랫동안 읽지 못할 수 있음을 보여줍니다.

두 개의 녹색 체크 - 메시지 읽음, 하나 - 읽지 않음.

 
fxsaber # :

나는 당신이 언급한 주제에 대해 전혀 모른다. 프로파일러는 어떤 식으로든 해석할 수 없는 일부 데이터를 표시합니다.

새 프로파일러로 병목 현상을 확인하려고 합니다. 아무리 노력해도 잘 안 됩니다.

재생 데이터를 누구에게 보내야 합니까? LAN 데이터는 LAN 메시지를 오랫동안 읽지 못할 수 있음을 보여줍니다.

두 개의 녹색 체크 - 메시지 읽음, 하나 - 읽지 않음.

망치가 한 곳이나 다른 곳에서 더 자주 칠수록 기능이 더 비쌉니다.

값싼 변수에서 카운터를 칠 확률은 얼마입니까? 거의 0

카운터가 포함될 즉시 명확한 기능이 있으며 건너 뜁니다. 다음 사용자를 확인하십시오.

 
Fast235 # :

망치가 한 곳이나 다른 곳에서 더 자주 칠수록 기능이 더 비쌉니다.

값싼 변수에서 카운터를 칠 확률은 얼마입니까? 거의 0

카운터가 들어갈 즉시 명확한 기능이 있으며 건너 뜁니다. 다음 사용자를 봅니다.

나는 실제 적용에 대해 이야기하는 것이지, 처음으로 명확해지는 아름다운 이론이 아닙니다.

 
fxsaber # :

나는 실제 적용에 대해 이야기하는 것이지, 처음으로 명확해지는 아름다운 이론이 아닙니다.

실제는 이전과 같았습니다. 몇 번이나 호출됩니까?

이것은 순전히 완벽주의적 관심이며,

비용이 저렴하더라도 추가 통화를 확인해야 한다는 데 동의합니다.

 
Fast235 # :

실제는 이전과 같았습니다. 몇 번이나 호출됩니까?

이전 프로파일러를 사용하여 병목 현상을 찾을 수 있었지만 이론상 모든 것이 여러 번 연구되었지만 데이터를 통해 무슨 일이 일어나고 있는지 이해할 수 없는 새로운 병목 현상에 대해 이야기하고 있습니다.

 
fxsaber # :

이전 프로파일러를 사용하여 병목 현상을 찾을 수 있었지만 이론상 모든 것이 여러 번 연구되었지만 데이터를 통해 무슨 일이 일어나고 있는지 이해할 수 없는 새로운 병목 현상에 대해 이야기하고 있습니다.

Renat는 일반적인 표현이 아닌 새로운 프로파일러를 보여줬어야 했는데, 서브우퍼 같은 사람들에게도 뭔가 나왔을 거라고 확신했다) (비하하지 않는다.)

사유: