Errors, bugs, questions - page 1337

 
Vladimir Pastushak:

The developers are not humourless.

Sounds to me like a download, and a "Download" sort of tree swing to the right or left.

If "swinging", you could also compare it to a tree: "right/left" - you also have humour (conflate "right/left")
 
Artyom Trishkin:
If "sway", you could have compared it to a tree: "right/left" - you're also humorous (fused "right/left")

The "sway" in the boat ,

And the ( fused right/left) thing is not my fault, it's Firefox's.

 
If you compile files in ME that lie in the Projects folder, the compiled files are created in the corresponding Experts, Indicators, Scripts folders. But if I compile with a separate compiler, this does not happen - compiled files are created in the folder with the source. Is it supposed to be like that or should the appropriate keys be used?
 

On characters BR-8.15 and BR-10.15 glitches, other BR periods are fine.

build 1150 real opening win7 x64 max

Video files .mp4 in trailer.

+ on period M1 (for example)

If you press the button "autoscroll chart to the end with the arrival of new ticks" - the chart is shifted to the beginning

Then if you press the key "END", the chart moves to the end for a second and again - it shifts to the beginning.

Files:
br-bag.zip  7609 kb
br-bag2.zip  3720 kb
 
Alexey Navoykov:

I hadn't paid much attention to it before, but now, when working with large arrays of class objects, I noticed a too large memory consumption. I checked it by sizeof() and an absolutely empty class occupies 16 bytes. And considering that the classes here are managed, we add 8 more bytes per pointer. The total is 24 bytes. It is rather a bit too much.

I looked through the documentation and saw what I've found there:

The question is why simple classes (those not participating in inheritance) need the virtual function table, since everything is known about these classes at the compilation stage.

It turns out that methods in them are called in the same way as virtual methods, i.e. there is additional redirection of access through the table. And where is the praised compiler optimization? How can we state after this some comparison of performance with C++?

The highlighted assumption is incorrect, only virtual methods are called through the table and my statement is not only true for the MQL compiler.
In addition, MQL, some virtual calls are executed as normal function calls, not through the table.
As Renat wrote, classes in MQL really always have a virtual table, which takes 8 bytes + 8 bytes of metainformation.
 
Vladimir Pastushak:

The developers are not humourless.

Sounds to me like a download, and a "Download" sort of tree swing to the right or left.

Thank you, corrected to "Downloading".
 
Ilyas:
The highlighted assumption is incorrect, only virtual methods are called through the table and my statement is not only true for MQL compiler.
Also, MQL, some virtual calls are made as normal function calls, not via table.
As Renat wrote, classes in MQL indeed always have a virtual table that takes 8 bytes + 8 bytes of metainformation.
Anyways, could you clarify why a simple class, which doesn't inherit from anyone and therefore doesn't take part in virtualization, needs a table? Renat mentioned virtual destructors, but in this case we have nothing to virtualize. There is only one destructor, so it can be inlined too, can't it? This leaves only 8 bytes of metadata.
 
Alexey Navoykov:
Thanks for the answer, but could you please explain why a simple class, which is not inherited from anyone and therefore does not participate in virtualization, needs a table? Renat mentioned virtual destructors, but in this case there is nothing to virtualize. There is only one destructor, so it can be inlined too, can't it, thus leaving only 8 bytes of metadata.
If a class is not inherited, its destructor is called as a normal non-virtual function and inlined if it meets the inline criteria.

The runtime system (MQL program environment) is built with the assumption that a class occupies at least 16 bytes.
 
If you compile files in ME, lying in the Projects folder, the compiled files are created in the appropriate folders Experts, Indicators, Scripts. But if I compile with a separate compiler, this does not happen - compiled files are created in the folder with the source. Is it supposed to be like that or should the appropriate keys be used?
 

build 854 vin 10 64 x

When testing EAs with visualisation when trying to close any other previously opened window than the current working window with the test, testing is interrupted ...

Closed via middle mouse button and context menu ...

Reason: