Segnetics

Вернуться   Segnetics > База знаний > ЧаВо - Часто задаваемые Вопросы

ЧаВо - Часто задаваемые Вопросы Ответы на вопросы, которые задают чаще всего

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2013, 16:51   #1
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Как оценить время выполнения программы в контроллере?

Вопрос:

1. Влияет ли на цикл системы тип используемых блоков обработки переменных – int, long, real? Насколько существенно это влияние?

2. Что выгоднее использовать с точки зрения сокращения цикла: два блока с двумя входами (or, and, add и т.п.) или тот же блок, но один, и с четырьмя входами? Или одинаково?

3. Что выгоднее использовать с точки зрения сокращения цикла: два блока screen str с одной строчкой или один блок с двумя строчками? Или одинаково?

4. Аналогичный вопрос по блокам EEPROM - что быстрее будет работать, два блока по одной ячейке или один блок на две ячейки?

Вообще, было бы очень кстати иметь хотя бы оценочное представление о потребности ресурсов всех блоков, для оптимального написания программы.



Ответ:

Полезные вопросы. Когда я задался такими вопросами, то выставлял множество однотипных блоков на 'поляну' и смотрел, сколько они выполняются времени.

1) Существенно. Если учесть, что мега - восьмиразрядный процессор без встроенной математики, то вполне логично, что (например) сложение двух шеснадцатиразрядных (int) чисел выполняется быстрее, чем сложение двух тридцатидвухразрядных (long). И тем более особняком стоит математика для чисел с плавающей точкой. Не проверял, но 'на глазок' сложение двух real в несколько раз (а то и на порядок) медленнее сложения двух int. Если внимательно рассмотреть прикладные макросы и макросы в наших типовых программах (в особенности в программах, генерируемых конструктором), то можно увидеть, что real используются только там, где это действительно необходимо.

2) два блока будут выполняться дольше, т.к. внутри SMH интерпретатор, который выполняет эти блоки по одному. Перейти на другой блок дольше, чем обработать дополнительные входы. В вашем случае всё прозрачно: два блока с двумя входами - это 8 операций (считать блок, считать 2 входа, записать результат, считать блок, считать 2 входа, записать результат), если один блок с 4 входами, то это 6 операций. Плюс к этому ещё и меньше места в памяти занимает.

3) блок screen выводит в один момент одну строку. Общее количество строк влияет только на объём занимаемой памяти. То же относится и с мультиплексорам: блок с 2 входами выполняется ровно такое же время, как и блок с 255 выходами.

4) всё как и в 3 пункте. Тут уже как удобнее использовать - два блока по 1 ячейке не требуют операции чтения, но занимают больше времени в цикле. С другой стороны, организация цикла чтения также займёт дополнительные блоки, следовательно и дополнительное время.

---------------------

Быстродействие по возрастанию: SMH-2G, Pixel-25, Pixel-12, SMH2010, SMH-2Gi, SMH4, Trim5.

В процентах условно-примерно как 100%, 110%, 120%, 150%, >1000%, >3500%, >3000% и очень зависит от подключенной периферии для расширяемых серий. В масимуме "железа" производительность Pixel-25/SMH-2G падает процентов на 10..15%.

Отступление: SMH2010 - полностью синхронное устройство. Остальные контроллеры асинхронны, т.е. быстродействие программы отличается от быстродействия периферии (программа как правило быстрее).

---------------------

Время выполнения программы всегда можно посмотреть в системном меню контроллеров Pixel и SMH-2G, или в любых контроллерах с помощью блока Device(kernel)

Также нужно учитывать, что в режиме отладки быстродействие AVR-контроллеров (SMH2010, Pixel, SMH2G) падает примерно на 30%.

Контроллеры на базе linux тоже замедляются в отладке, но на фоне их огромной валовой мощности это практически незаметно.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 29.08.2019 в 11:22
Arsie сейчас на форуме  
Благодарность от:
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Вкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SM CONNECT (Подробная инструкция в картинках как настроить) alekseyeve SMConnect & SMConfig 230 Вчера 10:57
Как узнать IP адрес из программы в панели TRIM5 slt Вопросы о программировании 11 01.11.2019 17:52
Как отследить работу своей программы maks Вопросы о Trim5 7 28.04.2018 14:14
Датчик СО2 в контроллере Trim (устаревшее) Arsie Библиотека 0 19.10.2016 15:35
Время выполнения программы Plastic_Enterprice(Yar) SMLogix 7 26.03.2015 16:11


Часовой пояс GMT +4, время: 18:47.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023