오류, 버그, 질문 - 페이지 977

 
Renat :
GDI 메서드가 호출되지 않습니다.

TextOut에 대해 이야기하고 있습니다. 그는 체계적이지 않습니까?

레이블에 대해 명확합니다. 어떤 식으로든 GDI와 연관시키지 않습니다.

 
voix_kas :

설명이 아닌 표시기의 값을 표시하기 위한 레이블의 전체(절반)에서 텍스트가 변경됩니다. 스크립트를 실행하면 볼 수 있습니다.

아니면 당신을 이해하지 못했습니다. 구체적으로 어떤 라인을 말씀하시는 건가요?

죄송합니다, 제가 휴대폰으로 엉뚱한 곳을 보고 실수를 했습니다.

앞으로 몇 시간 동안 자체 테스트를 수행하고 소스 코드와 자세한 결과를 게시할 것입니다.

 
sergeev :

TextOut에 대해 이야기하고 있습니다. 그는 체계적이지 않습니까?

레이블에 대해 명확합니다. 어떤 식으로든 GDI와 연관시키지 않습니다.

나는 GDI가 레이블에 대해 이야기하고 있다고 생각했습니다.

태그 매개변수의 수정은 객체 데이터를 그리거나 다시 읽을 때까지 이 데이터를 실제 객체(객체는 MQL5가 아니라 차트에 속함)에 실제로 적용하지 않고 명령 스트림을 고속 실행 특수 대기열에 독점적으로 대량으로 채우는 것입니다. 즉, 객체의 실제 수정이 지연됩니다. 개발자가 브레이크 없이 수만 개의 개체를 작업할 수 있도록 특별히 이 최적화를 적용했습니다.

즉, 객체를 수정할 때 실제 실행이 지연되어 속도감을 줍니다. 음, 렌더링의 모든 부담은 응용 프로그램의 인터페이스(그래픽) 스레드로 이전됩니다. 또한 렌더링 시 가시성 경계를 잘라내고 최적화하는 방법이 작동하므로 차트에서 300,000-500,000개의 개체로 정상적으로 작업할 수 있습니다.

그러나 비트맵으로 작업할 때는 모든 작업이 MQL5에서 지연 없이 즉시 발생하지만 그 다음에는 모든 작업이 즉시 수행됩니다. 그리고 그 결과 비트맵의 "수정 + 렌더링" 시간은 특정 개체 수에서 더 빨라질 가능성이 높습니다. 특히 비트맵이 호출 사이에 저장되고 필요한 것만 그릴 수 있고 전체 캔버스를 다시 작성할 수 없다는 점을 고려하면.

자세한 테스트를 실행하고 개체와 비트맵이 다른 모드에서 어떻게 작동하는지 보여주는 결과를 게시하겠습니다.

 

테스트 결과를 별도의 스레드에 게시 했습니다. 차트의 개별 텍스트 레이블 및 비트맵을 사용한 성능 테스트

저자는 비트맵으로 작업할 때 스크립트에 심각한 결함이 있었습니다. 실제로 그는 하나가 아닌 두 개의 비트맵을 사용하고 지속적으로 서로 복사하여 성능을 저하시켰습니다.

 
Renat :

테스트 결과를 별도의 스레드에 게시 했습니다. 차트의 개별 텍스트 레이블 및 비트맵을 사용한 성능 테스트

저자는 비트맵으로 작업할 때 스크립트에 심각한 결함이 있었습니다. 실제로 그는 하나가 아닌 두 개의 비트맵을 사용하고 지속적으로 서로 복사하여 성능을 저하시켰습니다.

저것들. 정보의 실제 출력 속도를 높이는 방법이 결함입니까? :)

나는 이전에 여기에서 캔버스 템플릿과 작업 캔버스가 도입된 목적에 대해 설명했습니다.

 

오래살자

MQL5 참조는 날짜/시간 유형 https://www.mql5.com/ru/docs/basis/types/integer/datetime 을 지정합니다.

"값 범위는 1970년 1월 1일부터 3000년 12월 31일까지입니다."

실제로 32535244799의 최대값은 3001.01.01 07:59:59입니다.

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип datetime - Документация по MQL5
 
테스트는 성능을 기반으로 하므로 추가 작업으로 인해 막히지 않아야 합니다.
 

프로그래밍의 순도 향상을 위해 대중에게 묻고 싶습니다.

전역 수준에서 선언된 특정 플래그(bool 플래그)가 있다고 가정합니다. 특정 이벤트/조건이 발생하면 특정 값을 설정해야 합니다.

첫 번째 옵션:

 if (некое условие) {
  Flag = false;
}

두 번째 옵션:

 if (некое условие) {
   if (Flag) Flag = false ;
}

옵션:

1. 성능 면에서 더 빠릅니까?

2. 그렇다면 "더 전문적"입니까?

예를 들어 모든 틱 과 같이 제어가 이 코드 섹션에 꽤 자주 포함된다고 가정합니다.

 
voix_kas :

프로그래밍의 순도 향상을 위해 대중에게 묻고 싶습니다.

전역 수준에서 선언된 특정 플래그(bool 플래그)가 있다고 가정합니다. 특정 이벤트/조건이 발생하면 특정 값을 설정해야 합니다.

물론 첫 번째 옵션이 더 빠릅니다. 더 적은 지침과 하나의 비교/분기가 적습니다.
 
Renat :
물론 첫 번째 옵션이 더 빠릅니다. 더 적은 지침과 하나의 비교/분기가 적습니다.
고맙습니다.