
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
In build 674 we have introduced the new feature of MQL5 code profiling. Now you can easily assess, locate and optimize performance bottlenecks in your code, having the precise data at hand.
For example, take a look at this calculation heavy script: RayTracer.Bmp.mq5. It makes a large number of calculations and writes the results into a BMP file. Its source code is attached below.
Compile the script and run it on the chart. It works pretty fast and will print its runtime in journal like this:
Generated file Picture.bmp can be found in the \MQL5\Files directory:
The script performs ray tracing to render a complex scene that contains a large number of objects.
Now let's try to estimate the cost of each function and line of this program. To do this, simply run the "Start Profiling" command in MetaEditor, wait while script ends its work on the chart and go back to the editor.
Profiling adds delays to the code control, slowing down the program 3-4 times. This can be observed by the increased generation time:
Take a look at the "Profiler" tab in MetaEditor. The default mode is "Functions by Calls" that shows functions results summary.
This table displays:
Report by functions is intended for general assessment of costs. Click the plus sign icon to expand functions, double-click - to go to the source code.
You can see the detailed cost of resources in the "Functions by Lines" mode that indicates measurements of each line:
The profiler operates in code generation mode with the full optimization cycle. Part of code will not be displayed in its pure form with up to the line precision, because MQL5 compiler makes extensive use of inline functions in order to accelerate programs.
You can export the results of profiling to Open XML, HTML or CSV files.
Well, what can we say? We have made another simple and convenient tool for developers!