Сделали несколько тестов. В ближайшем обновлении изменим процесс сохранения, чтобы интерфейс редактора не зависал во время сохранения. Также теперь компиляция будет выполняться одновременно с сохранением проекта в файлы. Это позволит увеличить производительность сохранения проекта и равномернее распределит нагрузку по ядрам процессора. Также добавим возможность только сохранения проекта (без компиляции), тогда можно будет быстро сохранять проект во время разработки, а компилировать один раз, перед запуском на сервере.
Но нужно отметить, что 3.5 минуты на сохранение проекта это слишком, если у Вас проект менее 100 тысяч тегов. И вышеописанные улучшения скорее всего не сильно помогут при сохранении Вашего проекта. Например, у нас в тестах на ПК с Core i5-7600K 3.8 GHz, три проекта (один 16000 переменных, второй 130000, третий 17500) сохраняются за 50 сек., 11 сек. и 28 сек. соответственно. Это реальные проекты, которые нам высылали пользователи. Во всех огромное количество плохо написанных скриптов, которые можно сократить примерно в два/три раза. Большое количество страниц, окон, трендов и сообщений.
В результате, т.к. о Вашем проекте мы не знаем ничего конкретного, то можем предположить следующее (предполагая что проект менее 100 тысяч тегов):
1. Вы сохраняется проекте на ПК со слабым процессором из-за чего компиляция занимает длительное время;
2. С производительностью ПК всё хорошо, но в проекте большое количество ненужных однотипных скриптов, которые можно было бы заменить одним скриптом;
3. С производительностью ПК всё хорошо, но в проекте большое количество скриптов и при этом все они уникальны и сократить их невозможно. Такой вариант нам трудно представить, т.к. для этого нужно написать в скриптах довольно большую программу, например перенести в скаду функции контроллера, написать свои ПИД-регуляторы и т.п. Или вместо каких-то стандартных систем скады написать свою. Например свою систему прав пользователей и т.п.. Даже в этом случае будет трудно добиться компиляции 3.5 мин.;
Спасибо, у меня используются и глобальные модули и процедуры.
Они используются почти в каждом проекте, здесь главное как они используются. Практически во всех проектах полученных нами от пользователей скрипты написаны очень плохо. К сожалению, написать один общий пример хорошего кода, который подошел бы для всех проектов - невозможно, т.к. скрипты в разных проектах сильно отличаются. Базовые скрипты описаны
по этой ссылке. Простой пример сокращения повторяющегося кода
описан по ссылке. Также часто пользователи дублируют скрипты считая их уникальными, когда они такими не являются. Примитивный пример - построение отчетов. Если есть 30 отчетов и 30 кнопок для построения соответствующего отчета, то пользователи обычно пишут 30 скриптов по OnClick, в каждом вызывается один и тот же код построения, отличается только имя отчета. Но можно было бы написать один скрипт, который брал бы имя отчета из свойства "Подсказка" кнопки. Если свойство "Подсказка" занято, то использовать свойство "Тег" и в зависимости от значения строить разные отчеты.
Таких примеров может быть много и они могут быть намного сложнее, в зависимости от решаемой задачи.