Везде, где это возможно, заменяйте глобальные переменные локальными.
전역 변수에 액세스하려면 로컬 변수에 액세스하는 것보다 더 많은 명령이 필요합니다. 또한 명시적으로 달리 명시하지 않는 한 컴파일러는 호출된 서브루틴이 모든 전역 변수의 값을 변경할 수 있다고 가정합니다. 따라서 서브루틴 호출 후 모든 전역 변수의 값이 메모리에 다시 로드되어 성능이 저하됩니다.
전역 변수(이 스레드와 다른 스레드 사이의 공유 변수가 아님)에 액세스해야 하는 경우 해당 값을 로컬 변수에 복사하고 복사본으로 작업하십시오.
전역 변수에 한 번만 액세스하는 경우를 제외하고 로컬 복사본을 사용하면 성능상의 이점이 있습니다.
내 예에서 내가 :
class CEA
{
private :
double _Ask, _Bid;
public :
void onTick( constMqlTick &tick);
};
//+------------------------------------------------------------------+void CEA::onTick( constMqlTick &tick)
{
_Ask = tick.ask;
_Bid = tick.bid;
}
onTick() 메서드에서 Ask,bid 값을 복사하고 다른 메서드(가상 거래)에서 _Ask, _Bid를 사용합니다.
전역 변수로 작업하는 것과 같을까요?
추신: 물론 옵션으로 모든 방법을 참조하여 &tick을 전달할 수 있지만 다시 한 번 더 효율적인 방법에 대한 질문이 있습니다.
onTick() 메서드에서 Ask와 Bid 값을 복사하고 다른 메서드(가상 거래)에서 _Ask, _Bid를 사용합니다.
전역 변수로 작업하는 것과 같을까요?
추신: 물론 옵션으로 모든 방법을 참조하여 &tick을 전달할 수 있지만 다시 한 번 더 효율적인 방법에 대한 질문이 있습니다.
문제. 염소에게 단추 아코디언이 필요한 이유는 무엇입니까? 하나의 방법, 하나의 클래스, 구형 말에서, 그러나 물리적 진공 상태에서(글쎄요, 저는 취했습니다)))), 네, 이해가 됩니다. 그리고 실제 프로젝트에서 글로벌 수준의 클래스 또는이 모든 트리코무딘을 처리하는 외로운 사람 (추가 버번은 죄송합니다))))) 핸들러 시작 부분에서 어디에서나 직접 요청) ))
논리적이다
하지만 요점은 정적 메서드 와 함께 사용하는 것이라고 생각합니다.
테스트를 해봐야 하는데 방법을 몰라서 여쭤보니
UPD: 어제 나는 이 주제를 빠르게 구글링했습니다. 개인 소멸자에 대한 언급이 많이 있으므로 이것이 무엇을 줄 수 있는지 생각해야 합니다.
정적 메서드에는 this 포인터가 없으며 이 포인터를 통해 아무 것도 할 수 없습니다.
개인 소멸자는 개체 자체에 의해 개체 삭제가 수행되도록 보장합니다. 그러나 위에서 말했듯이 이것은 피해야 할 좋은 습관이 아닙니다(때로는 매우 편리하고 어떤 경우에는 사용하는 것이 허용됨).
정적 메서드에는 this 포인터가 없으며 이 포인터를 통해 아무 것도 할 수 없습니다.
내가 당신의 메시지를 이해하지 못했을 수도 있지만, 메소드에 this 포인터가 없다는 것을 알고 있습니다. 클래스 필드는 정적 메서드에서 사용할 수 있으며 제거를 조작할 가능성이 가장 높습니다.
목표는 이 디자인을 보는 것이지만 일반적인 방법은 아니며 시도한 적도 없습니다.
1) 정적 메서드에서는 이에 대한 액세스가 금지됩니다.
"delete & this;"라고 말하는 곳 - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this
2) private 소멸자는 스택에 객체를 생성하는 것을 금지하지만, 이전과 같이 new 연산자를 통해 이번에는 힙에 객체를 생성할 수 있습니다.
다음은 delete &this의 또 다른 용도입니다.
감사합니다 확인하겠습니다
바쁘고, 모두 수리 중입니다. 조금 후에 다시 묻겠습니다... 즉석에서 기본 클래스에 다음과 같은 메서드가 있으면 어떻게 될까요?
기본 클래스를 제거하여 파생 클래스에서 메서드를 호출합니다. .... 실용적인 목표는 없지만 지금은 파악하고 싶습니다.
내가 당신의 메시지를 이해하지 못했을 수도 있지만, 메소드에 this 포인터가 없다는 것을 알고 있습니다. 클래스 필드는 정적 메서드에서 사용할 수 있으며 제거를 조작할 가능성이 가장 높습니다.
목표는 이 디자인을 보는 것이지만 일반적인 방법은 아니며 시도한 적도 없습니다.
감사합니다 확인하겠습니다
바쁘고, 모두 수리 중입니다. 조금 후에 다시 묻겠습니다... 즉석에서 기본 클래스에 다음과 같은 메서드가 있으면 어떻게 될까요?
기본 클래스를 제거하여 파생 클래스에서 메서드를 호출합니다. .... 실용적인 목표는 없지만 지금은 파악하고 싶습니다.
걱정하지 마세요. 절대 필요하지 않습니다.
그런 것들을 다루기 전에 언어의 기본 을 이해해야 합니다.
걱정하지 마세요. 절대 필요하지 않습니다.
이것은 올바른 진술이 아닙니다. 시야를 넓히지 않으면 당연히 필요하지 않습니다.
그런 것들을 다루기 전에 언어의 기본 을 이해해야 합니다.
일반적으로 MQL 작업의 90% 이상을 즉석에서 해결하지만 작업은 일반적으로 일반적이고 대부분의 작업은 이미 해결되었으며 자유롭게 사용할 수 있습니다.
삭제 정보 & this; ... 자체적으로 오프닝을 모니터링하고 requotes 동안 주문을 다시 열려고 시도할 수 있는 클래스 주문을 만들었습니다 ... 그리고 다른 많은 것들,
다른 클래스에서 이 객체(class-order)를 생성하고 삭제했습니다. 실험해 보겠습니다. 아마도 delete & this ; 사용하기가 더 편리할 것입니다
이것이 결함인지 기능인지 궁금합니다)

클래스의 인스턴스 내부에는 구조체가 있습니다.
구조의 내용을 보기 위해 끝을 냈습니다.
단, 대괄호를 넣어야 표시됩니다.
구조는 하나의 인스턴스에 있지만.
클래스가 배열의 요소 가 아니면 문제가 해결됩니다.
음, "파킹"을 위한 코드
이것이 결함인지 기능인지 궁금합니다)
클래스의 인스턴스 내부에는 구조체가 있습니다.
구조의 내용을 보기 위해 끝을 냈습니다.
단, 대괄호를 넣어야 표시됩니다.
구조가 하나의 인스턴스에 있지만.
클래스가 배열의 요소 가 아니면 문제가 해결됩니다.
음, "파킹"에 대한 코드
이것은 아마도 더 나을 것입니다 :-)
이것은 아마도 더 나을 것입니다 :-)
아마도) 그러나 툴팁의 본질은 변경하지 않습니다)
이것이 결함인지 기능인지 궁금합니다)
클래스의 인스턴스 내부에는 구조체가 있습니다.
구조의 내용을 보기 위해 끝을 냈습니다.
단, 대괄호를 넣어야 표시됩니다.
하나의 사본에 구조가 있지만.
클래스가 배열의 요소 가 아니면 문제가 해결됩니다.
음, "파킹"을 위한 코드
https://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/coding_style_best_perf.html
Везде, где это возможно, заменяйте глобальные переменные локальными.
전역 변수에 액세스하려면 로컬 변수에 액세스하는 것보다 더 많은 명령이 필요합니다. 또한 명시적으로 달리 명시하지 않는 한 컴파일러는 호출된 서브루틴이 모든 전역 변수의 값을 변경할 수 있다고 가정합니다. 따라서 서브루틴 호출 후 모든 전역 변수의 값이 메모리에 다시 로드되어 성능이 저하됩니다.
전역 변수(이 스레드와 다른 스레드 사이의 공유 변수가 아님)에 액세스해야 하는 경우 해당 값을 로컬 변수에 복사하고 복사본으로 작업하십시오.
전역 변수에 한 번만 액세스하는 경우를 제외하고 로컬 복사본을 사용하면 성능상의 이점이 있습니다.
내 예에서 내가 :
onTick() 메서드에서 Ask,bid 값을 복사하고 다른 메서드(가상 거래)에서 _Ask, _Bid를 사용합니다.
전역 변수로 작업하는 것과 같을까요?
추신: 물론 옵션으로 모든 방법을 참조하여 &tick을 전달할 수 있지만 다시 한 번 더 효율적인 방법에 대한 질문이 있습니다.
https://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/coding_style_best_perf.html
내 예에서 내가 :
onTick() 메서드에서 Ask와 Bid 값을 복사하고 다른 메서드(가상 거래)에서 _Ask, _Bid를 사용합니다.
전역 변수로 작업하는 것과 같을까요?
추신: 물론 옵션으로 모든 방법을 참조하여 &tick을 전달할 수 있지만 다시 한 번 더 효율적인 방법에 대한 질문이 있습니다.
https://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/coding_style_best_perf.html
내 예에서 내가 :
onTick() 메서드에서 Ask와 Bid 값을 복사하고 다른 메서드(가상 거래)에서 _Ask, _Bid를 사용합니다.
전역 변수로 작업하는 것과 같을까요?
추신: 물론 옵션으로 모든 방법을 참조하여 &tick을 전달할 수 있지만 다시 한 번 더 효율적인 방법에 대한 질문이 있습니다.