잘하셨어요!
더 많은 이전 테스트 및 토론은 다음과 같습니다.
각자의 분야에서 전문가!
고맙습니다!
또한 다음 릴리스에서는 5월 20일까지 과거 데이터를 기반으로 하는 디버거를 사용할 수 있을 가능성이 높습니다.
iFX Expo 에서 5월 26-28일에 선보일 예정입니다.
- iFX EXPO
- www.ifxexpo.com
Renat Fatkhullin :
- 새로운 64비트 MQL5 컴파일러는 현재 MQL5 컴파일러보다 2~10배 빠릅니다.
새로운 컴파일러의 개발은 매우 오랜 시간이 걸렸지만 결과는 놀라웠습니다. 문자열 연산의 최적화에 대한 질문이 있지만 우리는 또한 속도를 높이려고 노력할 것입니다. - 새로운 컴파일러는 Visual Studio 2012 x64 컴파일러의 품질과 속도에 가까워졌습니다.
아직 테스트 중이므로 모든 최적화 방법을 활성화하지 않았습니다. 따라서 결과는 더욱 향상될 것입니다.
또한 다음 릴리스에서는 5월 20일까지 과거 데이터를 기반으로 하는 디버거를 사용할 수 있을 가능성이 높습니다.
iFX Expo 에서 5월 26-28일에 선보일 예정입니다.
새로운 컴파일러는 Visual Studio 2012 x64 컴파일러의 품질과 속도에 가까워졌습니다.
아직 테스트 중이므로 모든 최적화 방법을 활성화하지 않았습니다. 따라서 결과는 더욱 좋아질 것입니다.
좋은 소식 ! 괜찮은 !
레나트 팻쿨린 :
동시에 더 많은 계산을 수행하고 DLL로의 전환에 대해 덜 생각할 수 있는 기능. 이것은 무거운 수학을 하는 사람들에게 특히 중요합니다.
예, 외부 DLL이 필요한 작업은 정말 생각나지 않습니다.
또한 다음 릴리스에서는 5월 20일까지 과거 데이터를 기반으로 하는 디버거를 사용할 수 있을 가능성이 높습니다.
그리고 이것은 정말 가장 필요한 기능입니다. 이것에 대해 - 정말 대단히 감사합니다.
개인적으로 여전히 한 가지 질문이 있습니다. 배열에 대한 포인터입니다. 개인 배열의 경우 이 문제는 배열을 클래스로 래핑하여 해결됩니다.
그러나 OnCalculate() 함수 에 전달된 배열의 경우 데이터를 먼저 내부 버퍼에 복사해야 할 때마다 분석기 및 처리기 개체 내부에 포인터를 전달해야 합니다. 일단 memcpy를 사용하여 포인터를 전달하려고 시도했지만 어떤 이유로 속도가 거의 같았고 제 생각에는 그러한 "트릭"을 사용해서는 안됩니다.
아마도 액세스 유형을 사용하는 것이 더 적합할 것입니다. 일반적으로 작업은 복사하지 않고 배열의 요소에 액세스하는 것입니다.
예, 외부 DLL이 필요한 작업은 정말 생각나지 않습니다.
MqlTradeRequest 구조 인스턴스의 편차 필드에 입력 매개변수를 할당하면 코드 생성 오류가 발생하는 것으로 나타났습니다.
가상의 예(다른 모든 것은 제거됨):
sinput ulong deviation = 100 ; int OnInit () { MqlTradeRequest request = { 0 }; request.deviation = deviation; //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { //--- }" 코드 생성 오류 1 1 "이 나타납니다.
"100"만 할당하는 경우:
int OnInit () { MqlTradeRequest request = { 0 }; request.deviation = 100 ; //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { //--- }
...그러면 컴파일이 오류 없이 실행됩니다. 참고로 저는 AMD Athlon II X4 645, 3.1GHz 프로세서를 사용하고 있습니다. 아마도 이것이 중요할 것입니다(말 그대로 이번 주 AMD의 특정 버그가 서비스 데스크의 MQL4에서 포착되었습니다).
컴파일러는 다른 것에 대해 불평하지 않습니다.
앞서 약속드린 대로 MetaTrader 5의 64비트 버전에 최적화된 새로운 MQL5 컴파일러를 출시합니다.
32비트 버전의 터미널과 이전 버전의 터미널 모두에 대해 생성된 코드의 완전한 호환성을 유지했습니다.
이미 데모 서버 MetaQuotes-Demo에서 새로운 기능을 사용할 수 있는 MetaTrader 5 빌드 1108로 업그레이드할 수 있습니다. 새로운 최적화 컴파일러의 모드를 활성화하려면 [Experts] 섹션의 metaeditor.ini에 Optimize=1 키를 등록해야 합니다.
MQL4, MQL5 및 C++ 컴파일러의 성능을 테스트하기 위해 표준 컴파일러 테스트 가 사용되었습니다. 모든 원본 파일은 Excel 스프레드시트와 함께 첨부되어 누구나 다시 확인할 수 있습니다.
그동안 다음과 같은 환경에서 테스트 결과를 살펴보자.
자세한 차트를 보려면 클릭하십시오.
어떤 결론:
MQL5는 MQL4보다 수십 퍼센트에서 몇 배 빠릅니다. 런타임 및 32비트 손실의 원인. MetaTrader 5는 훨씬 더 효율적이고 지속적으로 발전하는 실행 환경을 갖추고 있습니다.
새로운 컴파일러의 개발은 매우 오랜 시간이 걸렸지만 결과는 놀라웠습니다. 문자열 연산의 최적화에 대한 질문이 있지만 우리는 또한 속도를 높이려고 노력할 것입니다.
아직 테스트 중이므로 모든 최적화 방법을 활성화하지 않았습니다. 따라서 결과는 더욱 좋아질 것입니다.
그것은 상인에게 무엇을 제공합니까?
동시에 더 많은 계산을 수행하고 DLL로의 전환에 대해 덜 생각할 수 있는 기능. 이것은 무거운 수학을 하는 사람들에게 특히 중요합니다.