귀하의 예에 따르면 장점은 동일하지만 mql - 뉘앙스에는 먼저 두 개의 암시적 필드가 있으므로 오프셋을 통해 데이터 필드에 액세스합니다. 즉, 역참조 시 추가 계산이 있습니다.
어셈블러 연구에 대해 Vladimir에게 감사드립니다. 그리고 Aleksey가 제안한 것처럼 오버헤드는 클래스에 의해 생성됩니다. 이것으로부터 우리는 클래스 없이 할 수 있다면 절차적 스타일로 코드를 작성하는 것이 더 낫다는 결론을 내릴 수 있습니다. 즉, 작업에 속도가 필요하지 않으면 클래스로 래핑할 수 있지만 예를 들어 틱으로 작업하는 경우 래퍼 없이 직접 사용하는 것이 좋습니다. 원칙적으로 나는 이 접근법을 따랐고, 종종 클래스의 어떤 종류의 예를 발견한 후 해당 메소드를 절차적 접근법으로 구문 분석했습니다.
어셈블러 연구에 대해 Vladimir에게 감사드립니다. 그리고 Aleksey가 제안한 것처럼 오버헤드는 클래스에 의해 생성됩니다. 이것으로부터 우리는 클래스 없이 할 수 있다면 절차적 스타일로 코드를 작성하는 것이 더 낫다는 결론을 내릴 수 있습니다. 즉, 작업에 속도가 필요하지 않으면 클래스로 래핑할 수 있지만 예를 들어 틱으로 작업하는 경우 래퍼 없이 직접 사용하는 것이 좋습니다. 원칙적으로 나는 이 접근법을 따랐고, 종종 클래스의 어떤 종류의 예를 발견한 후 해당 메소드를 절차적 접근법으로 구문 분석했습니다.
포럼에 트롤이 있다... 이전에는 일부 사용자가 무시 기능을 도입하라고 요청하는 이유를 이해하지 못했습니다. 오, 지금은 어떻게 누락되었습니다 ...
단순 구조의 첫 번째 필드에 대한 액세스가 크기에 따라 달라지는 이유 - 명확하지 않습니다.
배열에서 50M 요소를 사용하고 있습니다. 크기가 20바이트 및 84바이트인 구조의 경우 각각 0.93GB 및 3.91GB의 데이터입니다. 그리고 계산의 일부로 아마도 그 모든 메모리가 프로세서의 캐시를 통과할 것입니다. 그리고 얻은 결과에 대한 매우 논리적인 설명은 0.93GB 크기의 데이터가 3.91GB 크기의 데이터보다 4배 빠른 속도로 메모리에서 프로세서 캐시로 로드된다는 것입니다.
그리고 C++로 테스트한 결과는 어떻습니까? 어셈블러 코드는 봤는데 테스트 결과가 안 보이거나 안 좋은 건가요?
배열에서 5천만 개의 요소를 사용하고 있습니다. 크기가 20바이트 및 84바이트인 구조의 경우 각각 0.93GB 및 3.91GB의 데이터입니다. 그리고 계산의 일부로 아마도 그 모든 메모리가 프로세서의 캐시를 통과할 것입니다. 그리고 얻은 결과에 대한 매우 논리적인 설명은 0.93GB 크기의 데이터가 3.91GB 크기의 데이터보다 4배 빠른 속도로 메모리에서 프로세서 캐시로 로드된다는 것입니다.
그리고 C++로 테스트한 결과는 어떻습니까? 어셈블러 코드는 봤는데 테스트 결과가 안 보이거나 안 좋은 건가요?
어셈블러 연구에 대해 Vladimir에게 감사드립니다. 그리고 Aleksey가 제안한 것처럼 클래스는 오버헤드를 생성합니다. 이것으로부터 우리는 클래스 없이 할 수 있다면 절차적 스타일로 코드를 작성하는 것이 더 낫다는 결론을 내릴 수 있습니다. 즉, 작업에 속도가 필요하지 않으면 클래스로 래핑할 수 있지만 예를 들어 틱으로 작업하는 경우 래퍼 없이 직접 사용하는 것이 좋습니다. 원칙적으로 나는 이 접근 방식을 따랐고, 종종 클래스의 어떤 종류의 예를 발견한 후 해당 메서드를 절차적 접근 방식으로 구문 분석했습니다.
다음과 같이 클래스를 작성하는 경우:
연구 결과에 따르면, 계산에 구조 필드를 자주 사용하면 클래스 B 가 느려질까요?
그래서 객체 배열을 우회하는 시간에 대해 논의했습니다)))
귀하의 예에 따르면 장점은 동일하지만 mql - 뉘앙스에는 먼저 두 개의 암시적 필드가 있으므로 오프셋을 통해 데이터 필드에 액세스합니다. 즉, 역참조 시 추가 계산이 있습니다.
그래서 객체 배열을 우회하는 시간에 대해 논의했습니다)))
귀하의 예에 따르면 장점은 동일하지만 mql - 뉘앙스에는 먼저 두 개의 암시적 필드가 있으므로 오프셋을 통해 데이터 필드에 액세스합니다. 즉, 역참조 시 추가 계산이 있습니다.
감사합니다. 도움이 됩니다!
그래서 객체 배열을 우회하는 시간에 대해 논의했습니다)))
귀하의 예에 따르면 장점은 동일하지만 mql - 뉘앙스에는 먼저 두 개의 암시적 필드가 있으므로 오프셋을 통해 데이터 필드에 액세스합니다. 즉, 역참조 시 추가 계산이 있습니다.
따라서 신비주의가 없습니다. 물리 법칙이 작용합니다.
그것은 "물리학의 법칙"에 맞지 않습니다.
역설적인 결과가 나왔습니다. 더 복잡한 계산은 1.5배 더 빠르게 수행되며 크기에 의존하지 않습니다.
그래서 객체 배열을 우회하는 시간이 논의되었습니다)))
귀하의 예에 따르면 장점은 동일하지만 mql - 뉘앙스에는 먼저 두 개의 암시적 필드가 있으므로 오프셋을 통해 데이터 필드에 액세스합니다. 즉, 역참조 시 추가 계산이 있습니다.
어셈블러 연구에 대해 Vladimir에게 감사드립니다.
그리고 Aleksey가 제안한 것처럼 오버헤드는 클래스에 의해 생성됩니다.
이것으로부터 우리는 클래스 없이 할 수 있다면 절차적 스타일로 코드를 작성하는 것이 더 낫다는 결론을 내릴 수 있습니다.
즉, 작업에 속도가 필요하지 않으면 클래스로 래핑할 수 있지만 예를 들어 틱으로 작업하는 경우 래퍼 없이 직접 사용하는 것이 좋습니다.
원칙적으로 나는 이 접근법을 따랐고, 종종 클래스의 어떤 종류의 예를 발견한 후 해당 메소드를 절차적 접근법으로 구문 분석했습니다.
어셈블러 연구에 대해 Vladimir에게 감사드립니다.
그리고 Aleksey가 제안한 것처럼 오버헤드는 클래스에 의해 생성됩니다.
이것으로부터 우리는 클래스 없이 할 수 있다면 절차적 스타일로 코드를 작성하는 것이 더 낫다는 결론을 내릴 수 있습니다.
즉, 작업에 속도가 필요하지 않으면 클래스로 래핑할 수 있지만 예를 들어 틱으로 작업하는 경우 래퍼 없이 직접 사용하는 것이 좋습니다.
원칙적으로 나는 이 접근법을 따랐고, 종종 클래스의 어떤 종류의 예를 발견한 후 해당 메소드를 절차적 접근법으로 구문 분석했습니다.
포럼에 트롤이 있다...
이전에는 일부 사용자가 무시 기능을 도입하라고 요청하는 이유를 이해하지 못했습니다. 오, 지금은 어떻게 누락되었습니다 ...
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
MQL5의 OOP에 대한 질문
fxsaber , 2020.05.30 14:06
장난치고 싶지도 않습니다. 간단한 구조를 만들었습니다.
단순 구조의 첫 번째 필드에 대한 액세스가 크기에 따라 달라지는 이유 - 명확하지 않습니다.
크기가 20바이트 및 84바이트인 구조의 경우 각각 0.93GB 및 3.91GB의 데이터입니다.
그리고 계산의 일부로 아마도 그 모든 메모리가 프로세서의 캐시를 통과할 것입니다.
그리고 얻은 결과에 대한 매우 논리적인 설명은 0.93GB 크기의 데이터가 3.91GB 크기의 데이터보다 4배 빠른 속도로 메모리에서 프로세서 캐시로 로드된다는 것입니다.
그리고 C++로 테스트한 결과는 어떻습니까?
어셈블러 코드는 봤는데 테스트 결과가 안 보이거나 안 좋은 건가요?
포럼에 트롤이 있다...
이전에는 일부 사용자가 무시 기능을 도입하라고 요청하는 이유를 이해하지 못했습니다. 오, 지금은 어떻게 누락되었습니다 ...
당신은 다른 사람이 아닌 자신을 돌볼 것입니다.
당신을 위한 것도 아니고 당신을 위한 것도 아닌 것이 답이었습니다.
조용히 무시))
크기가 20바이트 및 84바이트인 구조의 경우 각각 0.93GB 및 3.91GB의 데이터입니다.
그리고 계산의 일부로 아마도 그 모든 메모리가 프로세서의 캐시를 통과할 것입니다.
그리고 얻은 결과에 대한 매우 논리적인 설명은 0.93GB 크기의 데이터가 3.91GB 크기의 데이터보다 4배 빠른 속도로 메모리에서 프로세서 캐시로 로드된다는 것입니다.
그리고 C++로 테스트한 결과는 어떻습니까?
어셈블러 코드는 봤는데 테스트 결과가 안 보이거나 안 좋은 건가요?
어셈블러 연구에 대해 Vladimir에게 감사드립니다.
그리고 Aleksey가 제안한 것처럼 클래스는 오버헤드를 생성합니다.
이것으로부터 우리는 클래스 없이 할 수 있다면 절차적 스타일로 코드를 작성하는 것이 더 낫다는 결론을 내릴 수 있습니다.
즉, 작업에 속도가 필요하지 않으면 클래스로 래핑할 수 있지만 예를 들어 틱으로 작업하는 경우 래퍼 없이 직접 사용하는 것이 좋습니다.
원칙적으로 나는 이 접근 방식을 따랐고, 종종 클래스의 어떤 종류의 예를 발견한 후 해당 메서드를 절차적 접근 방식으로 구문 분석했습니다.
클래스 대신 구조가 가능하며 모든 것이 괜찮습니다.