다이렉트X - 페이지 10

 
Реter Konow :

테이블 변경 사항은 어디에 있습니까? 그녀는 다시 그림을 그리고 있습니까?

네 계속 다시 그려요

일반적으로 일시 중지 없이 스크립트는 3개의 테스트를 던졌습니다.

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) #1: 루프=1000ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) #2: 루프=10000ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) #3: 루프=100000ms=35812

1000 - 100,000 재작성 및 값 업데이트.... 놀랍게도 .Net + WinForm은 이러한 이해할 수 없는 작업에도 상당히 생산적이며 랩톱에서도 지연이 없습니다.

 #import "LogToWinForm.dll"
#import

double price[ 20 ];

#define   SpeedTest(count_x10,msg,EX)        { uint mss= GetTickCount (); ulong count=( ulong ) pow ( 10 ,count_x10); for ( ulong ii= 0 ;ii<count&&! _StopFlag ;ii++){EX;} \
                                               printf ( "%s: loops=%i ms=%u" ,msg,count, GetTickCount ()-mss);}

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
{
   ArrayInitialize (price, 1.0 );
   while (!Log::InitForm()) Sleep ( 200 );
   Sleep ( 1000 );

   SpeedTest( 3 , "№ 1" , sendTodl());
   SpeedTest( 4 , "№ 2" , sendTodl());
   SpeedTest( 5 , "№ 3" , sendTodl());
}
//+------------------------------------------------------------------+
void sendTodl()
{
   for ( int i = 0 ; i < 19 ; i++)
   {
      price[i] = price[i + 1 ];
   }
   price[ 19 ] = NormalizeDouble (price[ 18 ] + _Point , _Digits );
   double ask = NormalizeDouble (( double ) rand () * _Point , _Digits );
   double bid = NormalizeDouble (( double ) rand () * _Point , _Digits );
   Log::PrintToLog(ask, bid, price);
};
//+------------------------------------------------------------------+

속도 측정 수치가 짝수이면 22개의 이중 값(double, double double[])이 .dll에 던져지고 완전히 업데이트된 WinForms는 0.3ms가 걸립니다.

UPD: 하지만 이제 그러한 업데이트 속도에서 프로세서에 부하가 있다는 것이 분명합니다.


 
Igor Makanu :

네 계속 다시 그려요

일반적으로 일시 중지 없이 스크립트는 3개의 테스트를 던졌습니다.

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) #1: 루프=1000ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) #2: 루프=10000ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) #3: 루프=100000ms=35812

1000 - 100,000 재작성 및 값 업데이트.... 놀랍게도 .Net + WinForm은 이러한 이해할 수 없는 작업에도 상당히 생산적이며 랩톱에서도 지연이 없습니다.

속도 측정 수치가 짝수이면 22개의 이중 값(double, double double[])이 .dll에 던져지고 완전히 업데이트된 WinForms는 0.3ms가 걸립니다.

UPD: 하지만 이제 그러한 업데이트 속도에서 프로세서에 부하가 있다는 것이 분명합니다.


마이크로소프트사에 작성해야 합니다.))

그들의 테이블 업데이트는 내 것보다 더 큰 부하를 줍니다. 16ms마다 업데이트를 제공합니다.



추신. 날카로운에 동등한 테이블을 구축합니다. 부하를 비교하는 것은 흥미 롭습니다.

파일:
GUI_Expert.ex5  600 kb
 
12ms가 맞을 것입니다
 
Реter Konow :

마이크로소프트사에 작성해야 합니다.))

그들의 테이블 업데이트는 내 것보다 더 큰 부하를 줍니다. 16ms마다 업데이트를 제공합니다.



추신. 날카로운에 동등한 테이블을 만드십시오. 부하를 비교하는 것은 흥미 롭습니다.

쓰기는 하지만 테이블을 100만 번 업데이트하려고 하면 Net과 교환할 때 시간이 걸립니다.

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) #4: 루프=1000000ms=322531

업데이트가 16ms 미만입니다 - 0.3ms 이상 썼습니다.

그러나 이것은 완전히 독립적인 형식(창)이며 모든 Win 이벤트를 수신합니다. 일반적으로 테스트하기 위해 등록했습니다. 이러한 교환 중에 .Net이 멈추고 모든 것이 지연되는지 여부가 흥미로웠습니다.

추신 : 내일 나는이 스크립트를 PC에서 확인할 수 있습니다. 랩톱보다 프로세서가 더 강력합니다. 적어도 테스터 (최적화 장치)는 랩톱보다 거의 3 배 빠르게 작동합니다. , 아주 잘

 
Igor Makanu :

쓰기는 하지만 테이블을 100만 번 업데이트하려고 하면 Net과 교환할 때 시간이 걸립니다.

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) #4: 루프=1000000ms=322531

그러나 이것은 완전히 독립적인 형식(창)이며 모든 Win 이벤트를 수신합니다. 일반적으로 테스트하기 위해 등록했습니다. 이러한 교환 중에 .Net이 멈추고 모든 것이 지연되는지 여부가 흥미로웠습니다.

추신 : 내일 나는이 스크립트를 PC에서 확인할 수 있습니다. 랩톱보다 프로세서가 더 강력합니다. 적어도 테스터 (최적화 장치)는 랩톱보다 거의 3 배 빠르게 작동합니다. , 아주 잘

왜 백만 번 업데이트합니까? 16ms의 주파수로 실시간으로 테이블을 업데이트하는 것이 더 저렴할 것입니다. 이벤트 모델 이 더 빨리 작동하지 않기 때문에 나머지는 불필요합니다. 다시 로드하는 것입니다.

 
Реter Konow :

왜 백만 번 업데이트합니까? 16ms의 빈도로 실시간으로 테이블을 업데이트하는 것이 더 저렴할 것입니다. 이벤트 모델이 더 빨리 작동하지 않기 때문에 나머지는 불필요합니다. 다시 로드하는 것입니다.

그렇다면 무엇을 위해 노력할 것인가

추신: 저는 16ms에서 일시 중지했습니다. 그래서 피크의 프로세서는 1.5%만 로드되었습니다. 그래서 순간을 포착하고 랩톱 프로세서를 확인했습니다!

좋아, 논쟁하는 것은 전혀 흥미롭지 않습니다. MQL5 + .Net의 가능성을 확인하는 것은 흥미로웠습니다. 모든 것이 매우 훌륭하게 작동합니다!

 
Igor Makanu :

그렇다면 무엇을 위해 노력할 것인가

추신: 저는 16ms에서 일시 중지했습니다. 그래서 피크의 프로세서는 1.5%만 로드되었습니다. 그래서 순간을 포착하고 랩톱 프로세서를 확인했습니다!

좋아, 논쟁하는 것은 전혀 흥미롭지 않습니다 . MQL5 + .Net의 가능성을 확인하는 것은 흥미로웠습니다. 모든 것이 매우 훌륭하게 작동합니다!

그래서 우리는 확인하지 않았습니다. 즉, 비교하지 않았습니다. LCL과 Sharp에서 두 개의 유사한 테이블을 만들고 16ms의 빈도로 해당 셀을 다시 그릴 때 각각이 제공하는 부하를 확인해야 합니다. MKL에 테이블을 제공했습니다. 이제 Sharpe에서도 동일한 작업이 필요합니다. 그러면 누가 앞서 있는지가 분명해집니다.

Sharp 테이블은 dll을 통해 MT5에 연결한 다음 비교해야 한다고 덧붙입니다.

 
Реter Konow :

그래서 우리는 확인하지 않았습니다. 즉, 비교하지 않았습니다. LCL과 Sharp에서 두 개의 유사한 테이블을 만들고 16ms의 빈도로 해당 셀을 다시 그릴 때 각각이 제공하는 부하를 확인해야 합니다. MKL에 테이블을 제공했습니다. 이제 Sharpe에서도 동일한 작업이 필요합니다. 그러면 누가 앞서 있는지가 분명해집니다.

Sharp 테이블은 dll을 통해 MT5에 연결한 다음 비교해야 한다고 덧붙입니다.

나는 속지 않을 것입니다-아무 것도 바뀌지 않을 것이라는 것을 압니다. 글쎄요, 50-100개의 값을 전달하고 테이블에 3개의 열로 채우면 0.1ms가 추가됩니다

Microsoft가 .Net으로 이겼다고 생각할 수 있습니다. )))

추신: .Net의 코드가 15분, 총 약 50줄을 작성했다는 것이 저에게는 편리합니다. 똑똑하게 작동하고 브레이크가 감지되지 않았습니다.)

 
Igor Makanu :

나는 속지 않을 것입니다-아무 것도 바뀌지 않을 것이라는 것을 압니다. 글쎄요, 50-100개의 값을 전달하고 테이블에 3개의 열로 채우면 0.1ms가 추가됩니다

Microsoft가 .Net으로 이겼다고 생각할 수 있습니다. )))

추신: .Net의 코드가 15분, 총 약 50줄을 작성했다는 것이 저에게는 편리합니다. 똑똑하게 작동하고 브레이크가 감지되지 않았습니다.)

싸우지 않고는 승리도 없다...

나는 GUI 구축 속도 면에서 내가 Sharp의 디자이너를 곧 추월할 것이라고 장담할 용의가 있습니다. 의 요인.

이제 그것을 보았다. 그것은 고속 건설을 위해 날카롭게되지 않습니다. 그에게 죄송합니다...)))

 
Реter Konow :

이제 그것을 보았다. 그것은 고속 건설을 위해 날카롭게되지 않습니다. 그에게 미안합니다...)))

글쎄, 음 ... 당신은 절름발이 Peter입니다 - 그리고 드문)))))

속도 면에서 샤프는 최대한 C++에 가깝고 성능차이는 최대 5%정도이고 그 다음에는 성능차이가 없을수도 있습니다 - 간단한 작업을 C로 작성하는데 시간이 오래걸립니다 ++, Net에서는 한 시간 내에 모든 기본 작업을 수행합니다. 최대 하루가 완료됩니다. )

이미 사업을 하고 싶었지만 세 번의 클릭으로 열 2개를 더 추가했고 이제 MQL5에서 .dll 3x50 = 150 double(각각 50개의 배열 3개)로 전달합니다.

이제 속도를 측정했습니다. 이제 스크롤 막대 에도 리소스가 필요합니다. WinForm이 완전히 업데이트되었습니다.

최대 100,000개의 업데이트에 대한 동일한 테스트가 있습니다.

2020.03.15 00:12:21.812 tst_T (EURUSD,H1) #1: 루프=1000ms=1610

2020.03.15 00:12:38.382 tst_T (EURUSD,H1) #2: 루프=10000ms=16562

2020.03.15 00:15:19.642 tst_T (EURUSD,H1) #3: 루프=100000ms=161250

저것들. 내 랩톱의 스크롤 막대와 153개 셀 테이블이 있는 창에서 .Net의 WinForm이 1.6ms로 업데이트됩니다.

파일:
MQL5.zip  209 kb