У меня одного не работает отладчик и профилировщик?
Стоит win7 x64 , памяти 4 Гб, 4-ядерный Phenom. MT5 build 695
Также есть сообщение в ME - 2012.10.02 02:07:10 C++ compiler Microsoft Visual Studio 2010 found
Когда то раньше отладчик точно работал.
Обнаружение компилятора С++ касается только автоматической компиляции С/С++ кода.
Не правильно показывает профилировщик :(
Тест такой:
Чтение и запись csv файла размером в 2Гб в другой файл, происходит распознавание преобразование типов в соответствующее представление. Оперативки хватает, диск SSD
Засекается время чтения и сохранения
#include <Greshnik\\CSV fast.mqh> //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart() { ulong mc=GetMicrosecondCount(); CSV c; c.Read_from_file("Save_Pred\\EURUSDCB_Save_Pred.csv"); ulong mc1=GetMicrosecondCount(); Print("Read= ",(mc1-mc)/1000.0); c.Write_to_file("Save_Pred\\EURUSDCB_Save_Pred_1.csv",true); Print("Write= ",(GetMicrosecondCount()-mc1)/1000.0); }
Цифры в миллисекундах такие:
2020.11.15 14:38:24.844 test3 (EURUSD,M1) Read= 62121.937 2020.11.15 14:40:51.379 test3 (EURUSD,M1) Write= 146534.424
У профилировщика своё представление о затратах времени процессора:
Ладно, тут не так это важно.
Это код самой требовательной по общему времени(реальному, а не профилировщика) функции:
Самая затратная строка с номером 4997, а не 4986
Пробуем убрать ускорить её, комментируем строку 4997, и раскомментируем следующую строку, результат такой:
2020.11.15 14:52:00.890 test3 (EURUSD,M1) Read= 62175.355 2020.11.15 14:52:27.080 test3 (EURUSD,M1) Write= 26189.829
Время записи сократилось более чем в 5,5 раза, чтение не изменилось
Поверим на слово профилировщику и заменим строку 4986:
2020.11.15 14:57:28.116 test3 (EURUSD,M1) Read= 62286.274 2020.11.15 14:59:56.301 test3 (EURUSD,M1) Write= 148185.048
Как будто мы ничего и не меняли, совсем как изначальный вариант.
Если сравнивать преобразование double и long в строку, то результат такой:
2020.11.15 15:04:01.552 test3 (EURUSD,M1) Read= 62215.293 2020.11.15 15:04:41.996 test3 (EURUSD,M1) Write= 40444.237
Запись в 3.7 раза быстрее изначального
Тестировали с таким вариантом:
return string(long(columns[col].data_double[row/CSV_base_size_a].arr[row%CSV_base_size_a]*100000000.0));
![Обсуждение профилировщика Обсуждение профилировщика](https://c.mql5.com/36/42/obsuzhdenie-profilirovschika.jpg)
- 2020.11.13
- www.mql5.com
На текущий момент с современными оптимизирующими С++ компиляторами:
- Нужно забыть про соответствие строк
- Нужно забыть про сохранение мелких и средних функций. Даже среднего размера классы могут полностью терять свое тело, растворяясь.
- Оптимизация смешивает/пересортирует операции из разных строк с полным уничтожением границ высокоуровневых команд
- Разработчику нужно иметь серьезные познания в ассемблере и оптимизирующих компиляторах, чтобы понимать и правильно оптимизировать свои программы
- Наивные методы оптимизации и анализа программ 10-20 летней давности устарели из-за кратно возросшей мощи оптимизирующих компиляторов C++ (к MSVC относится слабо)
- Отчет профайлера имеет малое отношение к листингу программы
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
У меня одного не работает отладчик и профилировщик?
Стоит win7 x64 , памяти 4 Гб, 4-ядерный Phenom. MT5 build 695
Также есть сообщение в ME - 2012.10.02 02:07:10 C++ compiler Microsoft Visual Studio 2010 found
Когда то раньше отладчик точно работал.