MQL4에 대한 질문 - 페이지 12

 
유일한 질문은 будет ли работать заметно быстрее, если обработку массивов вынести в DLL?
누가 컴파일러를 설치했습니까? 확인하시기 바랍니다! 정말 파산하지 않습니까?


배열 액세스는 지역 변수보다 10배 느립니다.


배열 요소 에 액세스하는 시간은 항상 변수에 액세스하는 시간보다 길지 않습니다.
특정 숫자는 컴파일러마다 다르지만 추세는 계속되어야 합니다.

컴파일러 - Visual Studio 2005. 프로세서 - Athlon XP 2500+.
어레이 초기화와 함께 실행 시간 - 1.06-1.07초.
Dim t1, t2 as Double
t1 = 날짜 및 시간.타이머()
Dim x, y, z를 Double로
Dim d, k 더블로
Dim Open(5001), Close(5001) As Double
d = 5000 ~ 1 단계 -1의 경우
	k = 1 ~ 4999의 경우
		z = 종가(k) : y = 종가(k + 1) : x = 종가(k + 2)
		z = 개방(k) : y = 개방(k + 1) : x = 개방(k + 2)
	다음
다음
t2 = 날짜 및 시간.타이머()
MsgBox(CStr(t2 - t1) + "초")



같은 주기이지만

z = 종가(1) : y = 종가(1) : x = 종가(1)
z = 개방(1) : y = 개방(1) : x = 개방(1)


0.37-0.4 초를 제공합니다.

그리고 마지막으로

z = k : y = k : x = k
z = k : y = k : x = k


0.56-0.6초

이를 바탕으로 다음과 같은 결론을 내리고 싶다.
가장 중요한 것은 컴파일러가 아니고 "배열/배열이 아님"입니다. 가장 중요한 것은 올바른 데이터 구조화와 올바른 코드입니다!
추신 물론, 시간 측정을 제외한 이 모든 논문은 프로그래머로서 지극히 주관적이고 겸손한 제 개인적인 생각입니다.

 
감사하다!

예, 결국 컴파일러에서 결과 코드를 최적화하는 것이 좋습니다.
나는 야생에 들어가고 싶지 않지만 Visual Studio 컴파일러 자체가 배열 액세스를 최적화하는 것 같습니다.
테스트의 정직성을 위해 S와 같은 변수를 입력해야 합니다. 모든 할당 x, y, z 사이에 S=S+x, S=S+y, S=S+z와 같은 것을 삽입하고 마지막 출력 S에 "순수한" 속도를 얻는 시간 외에 추가합니다.

컴파일러 최적화 프로그램이 이 속임수를 부분적으로 알아낼 수 있지만.. :)
 
테스트의 정직성을 위해 변수를 도입해야 합니다.


나는 그런 생각을 버린지 오래입니다. 그리고 검사까지 했다. 그리고 다음과 같은 결론에 도달했습니다.

컴파일러는 규정된 모든 작업을 수행 하며 단순히 수행하지 않을 권리가 없습니다. 동일한 방법, 일부 타이머(구조적으로 관련 없는 코드) 또는 다른 프로세스에서 이러한 변수에 액세스하려는 위치를 100% 아는 것은 불가능합니다.
그래서, 모두 정직합니다. 확인했습니다.

PS 오프토픽, 죄송합니다. 주저하지 않았다.
 
배열 액세스에 대해.
ArrayCopySeries 의 매개변수로 지정된 배열의 결과는 무엇입니까?

값의 배열입니까, 아니면 값에 대한 포인터의 배열입니까?

(질문은 분명히 어리석은 일이지만 특히 Windows에서 특히 C에서 10년 동안 프로그래밍하지 않았습니다.)

그리고 이 모든 정보를 어디에서 읽을 수 있습니까?
 
틱 사이 에 EA 활성화 버튼의 상태 를 확인할 수 있는 방법이 있습니까?
매우 필요한..

아마도 적어도 .. 나는 모른다. start()를 재귀적으로 호출할 수 있습니까?
 
버튼이 비활성화되면 deinit()가 실행되지 않습니까?
 
틱 사이에 EA 활성화 버튼의 상태를 확인할 수 있는 방법이 있습니까?

절대 안돼. 버튼이 비활성화되어 있으면 Expert Advisor가 시작되지 않습니다.

start()를 재귀적으로 호출할 수 있습니까?

허용된.
 
슬라바,
답변 해주셔서 감사합니다.


잘. 그리고 이제 뭐..?
..모르겠어요 5로 가는데 어제 .. 그리고 오늘 3 .. 작습니다.

당신은 많은 작은 것들을 위해 정착해야합니다. 원하지 않았다. 자, 이제 뭐.. :(
너무 쉬울듯..

(주의, 이 명상은 이미 키보드의 가장자리에 튀고 있습니다)
 
FirstVisibleBar() 및 BarsPerWindow()는 ME에서 색상으로 구분되지 않습니다.
내 눈에는 이런 걸까, 아니면 그래야 하는 걸까.
 
FirstVisibleBar() 및 BarsPerWindow()는 ME에서 색상으로 구분되지 않습니다.
내 눈에는 이런 걸까, 아니면 그래야 하는 걸까.

그들은 눈에 띄고 항상 평소처럼 눈에 띕니다. 방금 빌드 183 및 187을 확인했습니다.