Dmitry Fedoseev : 올바른 파일을 찾았습니다. 어디에서, 어떤 숫자로, 어디서, 언제 보아야 하는지 명확하지 않지만, 이것이 없어도 하나의 레이블 대신 캔버스만 사용하는 것이 아니라 캔버스가 훨씬 느리다는 것을 육안으로 확인할 수 있습니다. , 그러나 레이블 묶음 대신 하나의 캔버스.
측정 결과에 따르면 FPS가 제한된 캔버스 기반 디스플레이(Canvas 무제한 FPS)가 FPS 가 제한된 레이블 기반 디스플레이 (Labels 무제한 FPS) 보다 성능이 약간 느린 것으로 나타났습니다. 그러나 일반적으로 둘 다 부하가 높은 프로세스의 정보를 표시하는 데 적합합니다.
측정을 수행하기 위해 전문가를 시작하는 방법
Canvas 또는 Labels 드롭다운에서 outType 선택
limit_fps 활성화 또는 비활성화
우리는 선택을 확인합니다
차트에서 측정을 시작하려면 시작 버튼을 누르십시오.
같은 방법으로 전문가는 시각적 테스터에서 측정을 수행할 수 있습니다. 테스터 설정의 날짜 범위만 nIterations 입력 매개변수의 값보다 적은 막대가 기록에 없는 방식으로 설정해야 합니다.
이 주제의 첫 번째 게시물에 새로운 Expert Advisor의 도움으로 더 정확한 측정을 추가하고 싶습니다. 현재 있는 측정값이 정확하지 않기 때문입니다. 그러나 불행히도 첫 번째 메시지는 더 이상 편집할 수 없습니다. 나는 중재자들에게 시작 부분에 더 정확한 측정값을 추가할 것을 요청하며, 현재 거기에 있는 측정값은 관련이 없는 것으로 발행되어야 합니다.
의미는 어떻습니까? 지금은 코드를 파헤치고 싶지 않습니다. 이러한 측정항목은 어떻게 계산됩니까? 이것이 테스터에서 테스트하는 방법이라면 실행에 소요된 총 시간을 측정해야 하며 코드의 개별 섹션 작업은 측정하지 않아야 합니다. 최후의 수단으로 init를 계산하지 마십시오. 이제 측정이 없으면 캔버스가 더 느리게 작동한다는 것이 분명합니다. 비정상인지는 모르겠지만...
의미는 어떻습니까? 지금은 코드를 파헤치고 싶지 않습니다. 이러한 측정항목은 어떻게 계산됩니까? 이것이 테스터에서 테스트하는 방법이라면 실행에 소요된 총 시간만 측정해야 하며 코드의 개별 섹션 작업은 측정하지 않아야 합니다. 최후의 수단으로 init를 계산하지 마십시오. 이제 측정이 없으면 캔버스가 더 느리게 작동한다는 것이 분명합니다. 비정상인지는 모르겠지만...
코드를 파헤치고 싶지 않습니다. 그리고 한마디 하고 싶은 마음도 없습니다. :) 나는 당신에게 설명하는 방법을 정말로 모릅니다. 내가 어떻게 모든 코드를 작성했는지 처음부터 끝까지 말하려면 ... 전체 기사가 될 것입니다. :)
Total은 루프의 끝에서 계산되고 최소, 중간 및 최대는 display.push, display.setText 및 display.update 이후 루프 본문에서 계산됩니다. 복잡한 것은 없습니다. 앉아서 모든 것을 잘 살펴보면 Canvas 및 Labels의 소스 코드까지 얻을 수 있습니다. 그건 그렇고, 거기에는 복잡한 것도 없습니다. Canvas에서 Bezier 곡선 등을 그리는 방법을 제외하고는.
음, 그럼 완전히 정상입니다.
내 gif에서도 하나의 캔버스는 패널이며, 자주 다시 그릴 필요가 없고 새 막대가 도착하는 순간을 포착할 필요가 없기 때문에 최소한의 리소스를 소모합니다.
감독자! 모든 것이 날아간다!
그리고 저속에서는 공백 없이 업데이트됩니다.올바른 파일을 찾았습니다. 어디에서, 어떤 숫자로, 어디서, 언제 보아야 하는지 명확하지 않지만, 이것이 없어도 하나의 레이블 대신 캔버스만 사용하는 것이 아니라 캔버스가 훨씬 느리다는 것을 육안으로 확인할 수 있습니다. , 그러나 레이블 묶음 대신 하나의 캔버스.
CanvasVsLabels.mq5 전문가를 시작하고 디스플레이 유형 outType 을 선택하고 limit_fps를 활성화하고 nIterations 를 설정하며 기본적으로 10000과 같습니다. 이 정도면 충분하며 변경할 수 없습니다. 그러면 결과는 여기에 제시된 것과 유사합니다: https://www.mql5.com/ru/forum/364640/page11#comment_21301589 .
이제 결과에 대해. 최소 지연 , 중간 지연 및 최대 지연 은 각각 패스당 최소 지연, 평균 지연 및 최대 지연입니다. Total 은 모든 nIterations 패스의 총 시간입니다.
다시 한 번, 나는 비교 결과 의 표를 제공합니다
마찬가지로 Expert Advisor가 이를 위해 설계되었기 때문에 테스터에서 측정을 수행할 수 있습니다. 하지만 아직 실행하지 않았습니다. 여유 있을 때 할게요. 앞으로 다양한 BitmabLabels의 디스플레이를 실험해 볼 계획입니다.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
캔버스 대 레이블
fxsaber , 2021.03.13 19:26
ZY 나에게만 그런 결과가?
15~20% 먹습니다. 분명히, 브레이크 비디오 카드.
ResourceReadImage가 매우 느린 것으로 나타났습니다. 그것을 제거했습니다-무부하가있었습니다.
다시 한 번 비교표를 히스토그램과 함께 게시합니다.
패스당 평균 지연 비교
어떤 이유로 총 작업 시간 (Total)과 비교할 수없는 것으로 판명되었습니다 ...
총 실행 시간 비교
측정 결과에 따르면 FPS가 제한된 캔버스 기반 디스플레이(Canvas 무제한 FPS)가 FPS 가 제한된 레이블 기반 디스플레이 (Labels 무제한 FPS) 보다 성능이 약간 느린 것으로 나타났습니다. 그러나 일반적으로 둘 다 부하가 높은 프로세스의 정보를 표시하는 데 적합합니다.
측정을 수행하기 위해 전문가를 시작하는 방법
같은 방법으로 전문가는 시각적 테스터에서 측정을 수행할 수 있습니다. 테스터 설정의 날짜 범위만 nIterations 입력 매개변수의 값보다 적은 막대가 기록에 없는 방식으로 설정해야 합니다.
자세한 정보와 출처는 차트 표시 라이브러리에 대한 설명에서 찾을 수 있습니다. https://www.mql5.com/en/code/33898
측정을 위해 특별히 수정된 라이브러리: https://www.mql5.com/ru/code/download/33898/chartdisplay.mqh
측정을 위한 범용 전문가: https://www.mql5.com/en/code/download/33898/canvasvslabels.mq5
자세한 내용은 KB를 참조하십시오. https://www.mql5.com/ru/code/33898
이 주제의 첫 번째 게시물에 새로운 Expert Advisor의 도움으로 더 정확한 측정을 추가하고 싶습니다. 현재 있는 측정값이 정확하지 않기 때문입니다. 그러나 불행히도 첫 번째 메시지는 더 이상 편집할 수 없습니다. 나는 중재자들에게 시작 부분에 더 정확한 측정값을 추가할 것을 요청하며, 현재 거기에 있는 측정값은 관련이 없는 것으로 발행되어야 합니다.
ResourceReadImage가 매우 느린 것으로 나타났습니다. 그것을 제거했습니다-무부하가있었습니다.
CanvasVsLabels.mq5 전문가 실행 중...
의미는 어떻습니까? 지금은 코드를 파헤치고 싶지 않습니다. 이러한 측정항목은 어떻게 계산됩니까? 이것이 테스터에서 테스트하는 방법이라면 실행에 소요된 총 시간을 측정해야 하며 코드의 개별 섹션 작업은 측정하지 않아야 합니다. 최후의 수단으로 init를 계산하지 마십시오. 이제 측정이 없으면 캔버스가 더 느리게 작동한다는 것이 분명합니다. 비정상인지는 모르겠지만...
진지하게?
호출 시 - 0 없이 약 15% 부하가 발생했습니다.
의미는 어떻습니까? 지금은 코드를 파헤치고 싶지 않습니다. 이러한 측정항목은 어떻게 계산됩니까? 이것이 테스터에서 테스트하는 방법이라면 실행에 소요된 총 시간만 측정해야 하며 코드의 개별 섹션 작업은 측정하지 않아야 합니다. 최후의 수단으로 init를 계산하지 마십시오. 이제 측정이 없으면 캔버스가 더 느리게 작동한다는 것이 분명합니다. 비정상인지는 모르겠지만...
코드를 파헤치고 싶지 않습니다. 그리고 한마디 하고 싶은 마음도 없습니다. :) 나는 당신에게 설명하는 방법을 정말로 모릅니다. 내가 어떻게 모든 코드를 작성했는지 처음부터 끝까지 말하려면 ... 전체 기사가 될 것입니다. :)
그리고 전문가가 측정하는 방법에 대해 전혀 이해할 수 있는 것은 없습니다.
Total은 루프의 끝에서 계산되고 최소, 중간 및 최대는 display.push, display.setText 및 display.update 이후 루프 본문에서 계산됩니다. 복잡한 것은 없습니다. 앉아서 모든 것을 잘 살펴보면 Canvas 및 Labels의 소스 코드까지 얻을 수 있습니다. 그건 그렇고, 거기에는 복잡한 것도 없습니다. Canvas에서 Bezier 곡선 등을 그리는 방법을 제외하고는.이제 측정이 없으면 캔버스가 더 느리게 작동한다는 것이 분명합니다. 비정상인지는 모르겠지만...
동시에 Canvas가 느린 입력 매개 변수를 말해야 합니다. limit_fps: false이면 "점쟁이에게 가지 마세요"가 분명합니다... :)
ResourceReadImage가 매우 느린 것으로 나타났습니다. 그것을 제거했습니다-무부하가있었습니다.
컴파일 중에 저장된 리소스에서 읽는 경우 이 작업을 한 번 수행해야 합니다.
리소스는 컴파일 중에 압축됩니다.