x64 플랫폼용 새로운 MQL5 컴파일러 테스트 - 계산 속도가 2배에서 10배로 빨라졌습니다! - 페이지 19

 
Aleksey Vyazmikin :

프로파일러 사용을 이미 제안하셨습니까?

 
Aleksey Vyazmikin :

옵션 번호 2. 다음과 같이 각 줄을 꺼내십시오.

 if (Test_P== 1000 ) if (DonProc< 5.5 && Levl_Down_DC<- 7.5 ) CalcTest=CalcTest+ 1 ; //(0.4810127 0.3037975 0.2151899)
                   if (Test_P== 1001 ) if (DonProc< 5.5 && Levl_Down_DC>=- 7.5 && TimeH< 21.5 && TimeH>= 16.5 && TimeH< 19.5 && Levl_Close_H1s1N< 2.5 ) CalcTest=CalcTest+ 1 ; //(0.4400657 0.4072250 0.1527094)
                   if (Test_P== 1002 ) if (DonProc< 5.5 && Levl_Down_DC>=- 7.5 && TimeH< 21.5 && TimeH>= 16.5 && TimeH< 19.5 && Levl_Close_H1s1N>= 2.5 ) CalcTest=CalcTest+ 1 ; //(0.3739837 0.5121951 0.1138211)
                   if (Test_P== 1003 ) if (DonProc< 5.5 && Levl_Down_DC>=- 7.5 && TimeH< 21.5 && TimeH>= 16.5 && TimeH>= 19.5 ) CalcTest=CalcTest+ 1 ; //(0.3390706 0.4647160 0.1962134)

별도의 기능으로. 레나타를 믿으세요 :)

저것들. 최종 결과는 다음과 같아야 합니다.

 if (Test_P== 1000 && Func1000()) CalcTest = CalcTest+ 1 ;
if (Test_P== 1001 && Func1001()) CalcTest = CalcTest+ 1 ;
등.
 
Aleksey Vyazmikin :

예, 여기에 고문에 대한 링크 가 있습니다.

이틀이 지났습니다-7 %의 편집 ...

'Tree_Brut_TestPL_F_Fast.mq5'
'Normal.mqh'
'Math.mqh'
code generated
0 error(s), 0 warning(s), 1456022 msec elapsed

여기 이 수레에

 2019.10 . 15 09 : 08 : 34.692 Terminal        Windows 10 (build 18362 ) x64, IE 11 , UAC, Intel Xeon  E5- 2630 v4 @ 2.20 GHz, Memory: 58760 / 65457 Mb, Disk: 20 / 224 Gb, GMT+ 2
 
Alexey Kozitsyn :

프로파일러 사용을 이미 제안하셨습니까?

아니요, 그들은 제안하지 않았습니다. 정확히 무엇을보아야합니까? 나는 그것들을 잘 사용하지 않습니다.


알렉세이 코지친 :

옵션 번호 2. 다음과 같이 각 줄을 꺼내십시오.

별도의 기능으로. 레나타를 믿으세요 :)

저것들. 최종 결과는 다음과 같아야 합니다.

등.

속도를 크게 향상시키는 것은 "if"가 아닌 "case :"가 있는 변형입니다. 같은 일을 해도

               switch (Test_P)
                    {
                     case 1000 : F1(); break ;
                     case 1001 : F2(); break ;
                    }
   

그 코드는 훨씬 더 늘어날 것입니다 ... 하지만 컴파일 시간과 성능을 비교할 수는 있습니다. 물론 ...

 
Slava :

여기 이 수레에

예, 그 코드는 크지 않습니다. 500MB에 대한 코드를 게시하지 않았습니다. 필요한 경우 할 수 있습니다.

 
Aleksey Vyazmikin :

어떤 다른 리소스를 제안합니까? 이것은 내가 지금까지 생각해 낸 가장 빠른 방법입니다 ...

논리를 최적화합니다. 예를 들어, 배열과 루프로 작업하십시오. 기준 값을 배열로 압축해 보십시오. 주기에서 수행할 검사입니다. 아마도 74,000 건의 필요성이 사라질 것입니다 ...

 
Aleksey Vyazmikin :

1. 아니요, 그들은 그것을 제공하지 않았습니다. 정확히 무엇을 볼 수 있습니까? 나는 그것들을 잘 사용하지 않습니다.


2. 거기에서 "if"가 아닌 "case :"를 사용한 변형에 의해 속도가 크게 향상되었습니다. 같은 일을 해도

그 코드는 훨씬 더 늘어날 것입니다 ... 하지만 컴파일 시간과 성능을 비교할 수는 있습니다. 물론 ...

1. 코드에서 가장 "제동된" 위치를 볼 수 있습니다. 그래도 ... 여전히 질문이지만 컴파일에 영향을 미치는지 여부는 ...

2. 원하는 대로: 케이스를 통해 할 수 있습니다. 또한 작은 기능으로 분해하는 것이 좋습니다. 분해해서 확인해보세요. 예, 물론 코드가 훨씬 더 늘어날 것입니다. 그래서 뭐 할까.

 
@Renat Fatkhullin , 프로파일러가 컴파일할 때 얇은 부분을 식별하는 데 도움이 될 수 있는지 명확히 말씀해 주시겠습니까? 아니면 실시간으로 코드의 속도를 확인하기 위해서만 사용해야 합니까?
 
Aleksey Vyazmikin :

예를 들어 이 열거를 외부 CSV 파일로 전송하지만 파일을 읽는 데 시간을 낭비하는 또 다른 문제가 발생합니다. 게다가 상담원에게 작업을 배포할 때 각 상담원에게 500MB를 보낼 수 없습니다. 코드는 하나의 에이전트(또는 아님?)에게 전송되고 둘 사이에 나뉩니다.

그리고 또 다른 질문, 내 코드는 500에서 15MB로 7zip으로 쉽게 압축되지만 컴파일 후 파일은 약 500입니다. 왜 그런가요? 컴파일하는 동안 기본 압축을 수행할 방법이 없습니다(최소 최대 100MB) ?

zip으로 파일을 압축합니다. 지퍼를 읽고 내부 포장을 풉니다. 500MB Advisor를 보내는 것보다 빠릅니다(각 에이전트에도 전송됨).

 
Alexey Kozitsyn :
@Renat Fatkhullin , 프로파일러가 컴파일할 때 얇은 부분을 식별하는 데 도움이 될 수 있는지 명확히 말씀해 주시겠습니까? 아니면 실시간으로 코드의 속도를 확인하기 위해서만 사용해야 합니까?

프로파일러는 컴파일과 관련이 없습니다.

Профилирование кода - Разработка программ - Справка по MetaEditor
Профилирование кода - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...