아이 말라 디차, 당신은 자신을 화나게하고, 자신을 수정하고, 우리가 잘하지 못하는 동안 또 다른 플러그를 수정했습니다.
1년 전만 해도 저도 이 문제로 고생했는데 열정이 많았어요. 장애물? 아니요, 본 적이 없습니다. 어쩌면 내가 휴가 후 기분이 좋을 수도 있지만 ... :(
네이티브 클래스 함수를 호출하는 비용과 비교했을 때 라이브러리 함수를 호출하는 비용은 얼마인가요?
단순한 래퍼가 아니라 재채기를 할 때마다 라이브러리를 호출해야 합니다.
잘됐네요, 우리가 잘 안 되고 있을 때 스스로 오줌을 싸고 고쳐서 또 다른 플러그를 꽂았으니까요.
사실 여기도 그렇게 나쁘지 않아요.
좋은 기사예요. 저는 항상 라이브러리를 사용해요. 지금까지 정상적인 코드 분리를 위한 유일한 방법이었거든요.
언제쯤 범용 메가 뉴런이 나올까요?
Urain:
네이티브 클래스 함수를 호출하는 비용과 라이브러리 함수를 호출하는 비용은 어떻게 되나요?
확인해보니 차이가 없습니다.
가져오기 또는 포함 시 테스트 빈 함수를 호출해도 시간에는 영향을 미치지 않습니다.
/* #import "Graph.ex5" void Test(long achart,string name,int awnd,int ax,int ay,color aclr); #import */ #include "Graph.mq5" void OnStart() { long a=GetTickCount(); for (int i=0; i<1000000; i++) { Test(0, "qwe", 0, 10, 10, clrRed); } Print(string(GetTickCount()-a)); }
사실 여기도 그렇게 나쁘지 않습니다.
이 글은 요점을 잘 짚어주고 있습니다. 저는 항상 라이브러리를 사용합니다. 지금까지 코드를 제대로 분리할 수 있는 유일한 방법이기 때문이죠.
범용 메가 뉴런은 언제쯤 나올까요?
여러분은 언제쯤 될까요?
솔직히 말해서, 저는 여러분의 글을 좀 더 읽어보고 MT5를 완전히 포기할 것 같습니다.
나는이 모든 목발이 내 영혼의 핵심에 지쳤고, 내가 돌릴 때마다 모든 것이 엉망이되어 "트램을 시작할 것입니다" :)
뉴런 카는 어딘가에 누워 있고, 진지하게 앉아서 기분이 좋으면 일이 남아 있지만 기분이 없습니다.
확인했는데 차이가 없습니다.
가져 오거나 포함 할 때 빈 테스트의 이러한 호출은 시간에 영향을 미치지 않습니다.
그들이 말했듯이 차이를 느껴보십시오:
2012.01.06 16:46:28 계산기(EURUSD,H1) empty=281
2012.01.06 16:46:28 계산기 (EURUSD,H1) lib=2344
//+------------------------------------------------------------------+ //|Test.mq5 | //+------------------------------------------------------------------+ #property library void Test(long achart,string name,int &awnd,int ax,int ay,color aclr) export { awnd=ax+ay; } //+------------------------------------------------------------------+
#import "Test.ex5" void Test(long achart,string name,int &awnd,int ax,int ay,color aclr); #import void OnStart() { int res=0; long a=GetTickCount(); for(int i=0; i<100000000; i++) { Test(0,"qwe",res,10,10,clrRed); } Print("liba=",string(GetTickCount()-a)); a=GetTickCount(); for(int i=0; i<100000000; i++) { res=10+10; } Print("empty=",string(GetTickCount()-a)); }
아니요, 함수 호출에 대해 질문하신 건가요?
아니면 일반적으로 루프 실행 속도를 확인하고 싶으신 건가요?
간단한 함수 호출과 ex5 성경에서 호출의 차이를 확인했습니다. 함수 호출의 속도에는 차이가 없습니다.
함수 호출이없는 빈 루프가 더 빨리 작동한다는 것은 분명합니다. 왜 그것을 전혀 확인하지 않습니까?
루프는 동일하고 루프 내부에서 실행되는 동작은 동일합니다 (한 경우에는 루프에서 직접, 다른 경우에는 함수 내부에서) 시간의 차이는 라이브러리에서 함수 호출의 순 시간을 제공합니다.
실험의 순수성을 위해 파일에서 직접 유사한 함수를 설명해 보겠습니다:
2012.01.06 17:18:39 계산기 (EURUSD,H1) empty=281
2012.01.06 17:18:38 계산기 (EURUSD,H1) lib=2281
//+------------------------------------------------------------------+ //|Test.mq5 | //+------------------------------------------------------------------+ #property library void Test(long achart,string name,int &awnd,int ax,int ay,color aclr) export { awnd=ax+ay; } //+------------------------------------------------------------------+
#import "Test.ex5" void Test(long achart,string name,int &awnd,int ax,int ay,color aclr); #import void Testlocal(long achart,string name,int &awnd,int ax,int ay,color aclr) { awnd=ax+ay; } void OnStart() { int res=0; int count=100000000; long a=GetTickCount(); for(int i=0; i<count; i++) { Test(0,"qwe",res,10,10,clrRed); } Print("liba=",string(GetTickCount()-a)); a=GetTickCount(); for(int i=0; i<count; i++) { Testlocal(0,"qwe",res,10,10,clrRed); } Print("empty=",string(GetTickCount()-a)); }
오류를 배제하기 위해 루프 길이를 하나의 변수 수에서 다시 작성했지만 결과는 동일합니다.
4.5배
2012.01.06 17:28:33 test (EURUSD,D1) ex5=2047
2012.01.06 17:28:31 test (EURUSD,D1) local=438
알렉스, 이것으로 충분하지 않나요?
저기 4번, 저기 2번 등등.
성경을 기반으로 성경을 쓰기 시작하면 브레이크는 눈덩이처럼 커질 것입니다.
이 방식은 성경 자체에서 성경 호출을 사용하지 않는다면 사용할 수 있습니다.
새로운 기고글 EX5 라이브러리로 프로젝트 홍보하기 가 게재되었습니다:
클래스 및 함수 구현 세부 사항을 .ex5 파일에 은닉함으로써 다른 개발자들과 노하우를 공유하고 공동 프로젝트 작업을 하며 온라인에서 프로젝트를 홍보할 수도 있습니다. MetaQuotes에서 EX5 라이브러리 클래스의 직접 상속을 가능하게 하기 위해 열심히 개발 중이긴 하지만 우리가 한번 먼저 구현해 보도록 하겠습니다.
우선 내보내기할 함수 라이브러리를 생성해 보겠습니다. 해당 함수들은 버튼이나 라벨 등과 같은 그래픽 객체를 나타내며 차트에서 객체를 삭제하고 차트의 색상 변수를 재설정할 수 있습니다.
도식으로 나타내면 다음과 같습니다.
작성자: ---