PS по поводу ускорений-замедлений. Принято прикладывать таблички с замерами времени. При этом, запуски должны производиться в одинаковых условиях и не менее 5 раз
В общее пользование выложен исходник тикового тестера. Разберем его особенности. Лаконичность. Все спрятано в обертку, поэтому весь исходник выглядит так. #property script_show_inputs
Но тут нет 10% разницы. ExpertRemove скорее всего экономит время на процедуру подсчета статистик на штатном завершении и сразу завершает программу. Init failed аналогично экономит завершение.
Плюс роль играет погрешность на замерах 180 мс на проход.
В первом случае тройная проверка индексированного доступа, а во второй одно индексирование с последовательным заполнение одного блока, что хорошо оптимизируется. Требования безопасности языка не позволяет пропускать контроль индексного доступа.
Мы уже пару месяцев работаем над новой версией компилятора, где оптимизация будет гораздо лучше. Возможно, справимся с такими случаями последовательного обращения к одинаково индексируемым объектам.
К сожалению, не сохранил OnStart2, что показывал такую разницу.
ExpertRemove скорее всего экономит время на процедуру подсчета статистик на штатном завершении и сразу завершает программу. Init failed аналогично экономит завершение.
Замер времени внутри OnStart2. Никакого отношения к ExpertRemove не имеет.
Плюс роль играет погрешность на замерах 180 мс на проход.
Требования безопасности языка не позволяет пропускать контроль индексного доступа.
Не знал, что на каждом Array[i] идет проверка 0<=i<Array.Size().
Мы уже пару месяцев работаем над новой версией компилятора, где оптимизация будет гораздо лучше. Возможно, справимся с такими случаями последовательного обращения к одинаково индексируемым объектам.
Получается, что можно ускорить и такое.
constint Size = ArraySize(Array);
for (int i = 0; i < Size; i++)
Array[i] = Value;
В матрицах и векторах такой же конроль идексного доступа?
Здравствуйте. Нейросети - это конечно, очень замечательно и современно, но не могли бы вы починить отсутствие торговых часов в субботу и воскресенье при импорте символа из json, не смотря на то, что в исходном символе они были включены? Этой баге уже много лет... Очень не удобно... И можно вернуть переход к определению по ctrl+click (вместо или вместе с кликом колесиком)? Пару версий назад ввели, но почему то с очередным обновлением снова вывели... Когда работаешь одновременно с другой полноценной IDE - постоянно путаешься и очень не удобно...
PS по поводу ускорений-замедлений. Принято прикладывать таблички с замерами времени. При этом, запуски должны производиться в одинаковых условиях и не менее 5 раз
Вот такие замеры (пункт Benchmark здесь).
Результаты.
И это не придирки на пустом месте. На глаз отлично видно, как сказывается на расчетах.
Строка для поиска: Oshibka 104.
Вот такие замеры (пункт Benchmark здесь).
Результаты.
Но тут нет 10% разницы. ExpertRemove скорее всего экономит время на процедуру подсчета статистик на штатном завершении и сразу завершает программу. Init failed аналогично экономит завершение.
Плюс роль играет погрешность на замерах 180 мс на проход.
b4260, отсутствует оптимизация компилятора.
И это не придирки на пустом месте. На глаз отлично видно, как сказывается на расчетах.
Строка для поиска: Oshibka 104.
В первом случае тройная проверка индексированного доступа, а во второй одно индексирование с последовательным заполнение одного блока, что хорошо оптимизируется. Требования безопасности языка не позволяет пропускать контроль индексного доступа.
Мы уже пару месяцев работаем над новой версией компилятора, где оптимизация будет гораздо лучше. Возможно, справимся с такими случаями последовательного обращения к одинаково индексируемым объектам.
Но тут нет 10% разницы.
К сожалению, не сохранил OnStart2, что показывал такую разницу.
ExpertRemove скорее всего экономит время на процедуру подсчета статистик на штатном завершении и сразу завершает программу. Init failed аналогично экономит завершение.
Замер времени внутри OnStart2. Никакого отношения к ExpertRemove не имеет.
Плюс роль играет погрешность на замерах 180 мс на проход.
Увеличил в несколько раз длительность.
Разница 9%. Все такая же зависимость от void/int OnInit и ExpertRemove.
У меня просто оптимизация в одном случае идет условно 100 секунд, в другом - ~110. Это невозможно не заметить. Воспроизводится всегда.
Требования безопасности языка не позволяет пропускать контроль индексного доступа.
Не знал, что на каждом Array[i] идет проверка 0<=i<Array.Size().
Мы уже пару месяцев работаем над новой версией компилятора, где оптимизация будет гораздо лучше. Возможно, справимся с такими случаями последовательного обращения к одинаково индексируемым объектам.
Получается, что можно ускорить и такое.
В матрицах и векторах такой же конроль идексного доступа?
Не знал, что на каждом Array[i] идет проверка 0<=i<Array.Size().
b4260, ArrayRemove для массивов простых структур работает медленнее решения с контролем индексного доступа.
Т.е. простой сдвиг влево одинакового куска памяти работает медленнее кастомного решения.
Строка для поиска: Oshibka 105.
А можно завести флажков про то что:
ChartFirst, OrdersTotal, OrdersHistoryTotal, SymbolsTotal,CustomTicksAdd, CustomRatesUpdate, ObjectsTotal
потенциально будут долго исполняться, ибо внутренняя кухня не синхронизована и на их вызове прямо сейчас можно встрять по скорости?
по логике зачастую их можно и переповторить позже. Это не столь критично как потеря темпа.