Да чё гадать. Отладчиком пошагать по этому коду, и будет более-менее ясно, что выкинуто и что оставлено. Почти уверен, что всё будет на месте.
Вид для печати
Да чё гадать. Отладчиком пошагать по этому коду, и будет более-менее ясно, что выкинуто и что оставлено. Почти уверен, что всё будет на месте.
vladimirisitnikov опять со своим уставом в чужой монастырь. Есть у Вас объяснение, почему при бесконечном цикле, контроллер уходит в перезагрузку, по Вашему же компилятор должен выкинуть пустые никчемные циклы
Мне преподаватель геометрии в школе говорил простую вещь: "Делай хорошо, плохо само получится".
Есть правила "хорошего замера производительности", и они не зависят от платформы.
Вы бы ещё сравнивали скорость выполнения математических операций таким способом:
А потом внезапно обнаружили, что КДС вычисляет это выражение (2+3*4+...) на уровне компиляции, и всё ваше "сравнение скорости" превращается в фиг знает что.Код:FOR i:=1 TO 10 DO
tmp := tmp + 2+3*4+5*6+7*8+9+10;
Вон, КДС'овцы пишут, что какие-то оптимизации КДС-таки делает: http://forum.codesys.com/viewtopic.php?f=11&t=5384
>1. Expressions containing CONSTANT values are pre-evaluated during compilation.
Yes
Смотрите: то, что "длинный цикл вызывает перезагрузку", да говорит о том, что цикл не выкидывается (или какая-то его часть остаётся). Но это никак не говорит о том, остаётся ли работа со всеми переменными (даже теми, которые больше нигде не используются, и не могут быть видны извне).
Даже если окажется, что КДС2 тупой как бревно и ничего не оптимизирует (судя по ссылке выше, что-то КДС всё-таки оптимизирует), то в КДС3 может оказаться по-другому. Кто-то начнёт сравнивать ПЛК vs СПК "одним и тем же кодом" и получит "странное".
Поведение "под отладкой" и "в боевом режиме" может отличаться. Т.е. для целей отладки код может генерироваться более медленный, и без оптимизаций, а в простом режиме -- с оптимизациями.
vladimirisitnikov, зачем много слов ? Представьте свой правильный код для тестирования производительности ПЛК110.
Вы насмотрелись презентаций по Яве. К системам реального времени оптимизация, как это может делаться на ПК, ни какого отношения не имеет. У неё всегда режим steady state
Повторяю: авторы CoDeSys пишут, что оптимизации в КДС есть. Вот: http://forum.codesys.com/viewtopic.php?f=11&t=5384
Я не говорю про just in time оптимизации. Разумеется их тут нет. Да, steady state. Но это не мешает делать базовые отпимизации, что КДС и делает (вычисляет 2+2 на уровне компиляции, а не при каждом выполнении цикла программы).
А вы вместо использования научного подхода "гипотеза-проверка-теория" начинаете оправдываться-отмазываться "у наших систем реального времени всё по-другому, поэтому нечего тут лезть".
Ну, код я написал (см выше, там со словами WHILE tmp1 < JMax (* возможно, стоит что-то поковарнее придумать, ).
Возможно, и более простой подойдёт, но нужно несколько замеров сделать, чтобы понять ведёт ли себя компилятор так, как ожидается.
Я сейчас нахожусь в тысяче километров от ПЛК, поэтому пока просто код, без проверки.