MQL4 및 MQL5에서 Digits()를 무시하고 숫자(따옴표 제외)의 쉼표 뒤 소수 자릿수 가져오기 - 페이지 20

 
Алексей Тарабанов :

무엇의 결과?

속도
 
fxsaber :

다중성은 문제의 조건입니다.

그냥 퍼즐?

 
Алексей Тарабанов :

그냥 퍼즐?

실용적인 적용

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 5 플랫폼 빌드 1930의 새 버전: MQL5의 플로팅 차트 창 및 .Net 라이브러리

fxsaber , 2018.12.09 00:18

이 예제 는 이제 15배 더 빠릅니다.

 1000000
Time [TestResource()] = 286646


대략적으로 말하자면, 리소스를 통한 쓰기/읽기 틱의 전체 주기는 초당 4백만 틱의 속도로 진행됩니다.


거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

"MQL5의 Do-It-Yourself 다중 스레드 비동기 WebRequest" 기사에 대한 토론

fxsaber , 2018.12.09 00:52

업데이트된 Resource_Data.mqh를 사용해 보십시오. 웹 페이지 전송 시 지연이 사라져야 합니다.

 #include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

#define BENCH(A)                                                              \
{                                                                             \
   const ulong StartTime = GetMicrosecondCount ();                              \
  A;                                                                          \
   Print ( "Time[" + #A + "] = " + ( string )( GetMicrosecondCount () - StartTime)); \
}  

const RESOURCEDATA< uchar > Resource( "::" + __FILE__ ); // Ресурс для передачи данных (байты)
uchar BytesIn[];
const int Init = ArrayResize (BytesIn, 1000000 );

void TestResource()
{
   uchar BytesOut[];

  Resource = BytesIn;
   Print (Resource.Get(BytesOut));
}

void OnStart ()
{
  BENCH(TestResource());
}


구 버전

 1000000
Time [TestResource()] = 103746


새 버전

 1000000
Time [TestResource()] = 5222
 
Ilya Malev :

그리고 무작위 선택에 대한 일반적인 내장 ArraySort와 정렬 속도의 비교가 있습니까? 무작위 데이터를 평균적으로 더 빠르게 정렬하는 하나 이상의 방법...

또는 더 빠르지는 않지만 적어도. 또는 그 만큼은 아니지만 적어도 2배 이상 길지 않습니다. DLL 및 멀티스레딩과 같은 기타 샤머니즘 없이

소스가 있으므로 스스로 측정할 수 있습니다.

 
게으른 사람.
 
Nikolai Semko :
난 지나칠 수 없어.
컴퓨터에 도착하면 확실히 확인하겠습니다.
간단히 살펴보면 결과를 10-20% 향상시키는 방법에 대한 아이디어가 이미 있습니다.

이미 최대 성능에 도달했습니다 .

 
아마도 그는 무언가를 눈치채지 못했을 것입니다. 그러나 한 가지 유형의 공용체만 사용하면 여전히 가능성이 있습니다.
 
Nikolai Semko :
아마도 그는 무언가를 눈치채지 못했을 것입니다. 그러나 한 가지 유형의 공용체만 사용하면 여전히 가능성이 있습니다.

틀리면 다행입니다.

 
Алексей Тарабанов :
게으른 사람.
당신의 냄새가 난다. 뚱뚱한 토끼, 중령 동지.
 
fxsaber :

틀리면 다행입니다.

도중에. 직접 시도해 볼 수 있습니다. 아이디어는 10, 100, 1000, 10000과 같은 다양한 크기의 구조 배열과 함께 공용체를 사용하는 것입니다.
이렇게 하면 루프가 몇 자릿수만큼 줄어들고 ArrayCopy에 대한 호출 수가 몇 자릿수만큼 줄어듭니다.
이것은 memcopy에 더 가까워져야 합니다.