ChartGetInteger(chart_id,CHART_FIRST_VISIBLE_BAR) - BUG - page 2

 
Doerk Hilger #:

Results running the EA on a chart with nothing else, and without doing anything.

2025.10.26 20:17:00.805    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (5.0 ms)
2025.10.26 20:17:45.061    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (3.3 ms)
2025.10.26 20:18:45.779    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (3.5 ms)
2025.10.26 20:18:54.815    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (2.3 ms)
2025.10.26 20:18:59.684    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (2.1 ms)
2025.10.26 20:19:39.438    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (3.6 ms)
2025.10.26 20:19:59.685    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (3.2 ms)
2025.10.26 20:20:00.700    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (4.1 ms)
2025.10.26 20:20:02.079    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (6.5 ms)
2025.10.26 20:20:16.085    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (2.2 ms)
2025.10.26 20:20:16.243    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (2.7 ms)
2025.10.26 20:20:19.758    498640 (EURCAD,H1)    (Bench ChartGetXXX calls) Metrics update > 2 ms:  (2.0 ms)

Playing with the chart (zoom in/out, shift, resize, etc...)

With one of my indicator running (which can also use ChartGetXXX functions), without touching anything.


We could argue about the "Max" (up to 48 ms), but on average it's always < 1ms.

And yes, of course, reading some properties takes more time.

 

Without even touching the chart and after fresh start of MT5:


While not much going on in the system:


You measure the average, which is not helpful. The peaks count, especially when they happen already every second like in my case. Average doesnt help when you have peaks all the time which make the whole thing laggy. 

 
Alain Verleyen #:

Your sarcasm is not appreciated.

After untrue offenses and personal attack from your side, you should appreciate you did not get an appropriate answer back. 

We talk about things proven with source code 5 years ago, and I dare to complain. Wow. 

Alain Verleyen #:
You are unfair as from this old topic, the issue was reproduced AND fixed.

Its not fixed, as you see. 

 

From the point of view of MQ there is no bug, since it works. 

We can also call it results from a bad architectural code design, but then MQ coders would feel offended. 

The problem comes from this 1990s nonsense, where it was still natural to have functions like GetInteger, GetDouble in a single thread environment for every single value, instead of having one call for the whole data block. Not only cuz the single calls unnecessarily multiply the  waste of time, also cuz the chart could have become changed in between while you request the values separately, and then you have to restart the whole thing again and waste another n milliseconds - for nothing. This is bad design, and when it leads to frequent issues in modern times, its a bug. 

This architecure affects the whole MQL design. Not one value you request via GetInteger, GetDouble etc. is ever safe/threadsafe - not a single one. 

There is no reasonable reason why the values cant be provided within a few nanoseconds, except: It is as it is - we don't wanna change it. 

And thats exactly what annoys me: They constantly come with changes in the language which have almost no advantage for 99,9% of the coders, but force everyone to pay attention and make effort, instead of fixing the basics first which would help 100% - no matter if the most of them would see or understand it.