Big changes for MT4, in a few weeks - page 262

 
braintheboss:

I'm not kidding. They answer about inline methods. They said are implemented ( i sent example ) but profiler say opposite ( methods spend time for be executed ). If that methods are inline, are not invoked, only base method with code. Really I think they dont know what are inline methods too

PS: I tested web platform with my real account in MQL5 web and is cool. Basic version of PC platform. They only have 2 good things. Mobile app and now this.

I guess that web version will be the future version

 

I finished inline conversation with them today. They said me methods are inline but profiler show absolute execute time ( profiler call to method too). Its evident they don't know profiler CPU opcodes for avoid to use timers like old school. If you want know if your code waste time in calls you need call to a wizard...

 
braintheboss:
I finished inline conversation with them today. They said me methods are inline but profiler show absolute execute time ( profiler call to method too). Its evident they don't know profiler CPU opcodes for avoid to use timers like old school. If you want know if your code waste time in calls you need call to a wizard...

I probably missed information about inlining functions. Is there any keyword for inline declaration?

 
Ovo:
I probably missed information about inlining functions. Is there any keyword for inline declaration?

In C/C++ have keyword. In MQL is automatic. Problem is you dont know when are inline. You have experience for try guess what method can be inline but every complier have different rules.

Typical inlined method ( I sent this example to MT because profiler say spend time ):

class A {

int z;

public: A(){};

public: virtual void set() {

z = 1;

}

};

class B : public A {

public: B(){};

public: virtual void set() { A::set(); };

};

B b;

b.set(); //compiled as "a.set()" because is simple call to other method and can be substitute for method called.

 
braintheboss:

In C/C++ have keyword. In MQL is automatic. Problem is you dont know when are inline. You have experience for try guess what method can be inline but every complier have different rules.

Typical inlined method ( I sent this example to MT because profiler say spend time ):

class A {

int z;

public: A(){};

public: virtual void set() {

z = 1;

}

};

class B : public A {

public: B(){};

public: virtual void set() { A::set(); };

};

B b;

b.set(); //compiled as "a.set()" because is simple call to other method and can be substitute for method called.

Ok, thank you for explanation. It is probably not so important for me, I follow the rule "First make it working, then optimize", and hardly I ever proceed to optimizing.

 
Ovo:
Ok, thank you for explanation. It is probably not so important for me, I follow the rule "First make it working, then optimize", and hardly I ever proceed to optimizing.

This is not optimization. It's how build code structure in efficient way. But I agree with your phrase. My framework is now in optimize step ( clear code too ). And they give you tools very erratic or little capabilities for help you really

 
braintheboss:
This is not optimization. It's how build code structure in efficient way. But I agree with your phrase. My framework is now in optimize step ( clear code too ). And they give you tools very erratic or little capabilities for help you really

If we are looking for tools that should do what C++ (and similars) do, then why not using C++ in a dll?

 
checkin:
If we are looking for tools that should do what C++ (and similars) do, then why not using C++ in a dll?

Dlls overhead and have maintain 2 projects for same task. If you can do it in one platform is better. The problem are not simple tools in MT. The problem are simple tools doing things wrong or in a deficient way. You know they implement things late and buggy.

I'm waiting for they decide if remove stupid check in compiler when you mix primitives and objects in a template class. Finally I had do ugly hack. I wonder why is complicate remove one code line for them.

 

Also, trading functions can not be executed from a dll

 
braintheboss:

Dlls overhead and have maintain 2 projects for same task. If you can do it in one platform is better. The problem are not simple tools in MT. The problem are simple tools doing things wrong or in a deficient way. You know they implement things late and buggy.

I'm waiting for they decide if remove stupid check in compiler when you mix primitives and objects in a template class. Finally I had do ugly hack. I wonder why is complicate remove one code line for them.

For me there is also a problem when they change behaviour of a command without leaving a word. If I lost several hours and finally located the problem and asked them "why?", they always responded "it had no sense so we silently removed it". One of their improvements, computing size of a struct from its declaration (ignoring any inheritance), prevents me using their file commands. After the silent improvement of the SetSymbolPeriod() there is no way left how to force indicators reset on the offline chart.

Reason: