Общее время выполнения компиляции.

Deoptim
Offline
Зарегистрирован: 20.01.2021

Здравствуйте.

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

Это возможно сделать на дейсвnующей платформе Arduino?

В теории там делов то  - просто засечь время выполнения если используется скрипт sh или py...

Спасибо.

b707
Offline
Зарегистрирован: 26.05.2017

Deoptim пишет:

Здравствуйте.

После компиляции в Arduino

компиляция происходит не "в ардуино", а в винде, линуксе или маке... и соответвтственно решения будут разные. Например в винде никаких скриптов py или sh не используется, компилятор бинарный

Стестняюсь спросить - а нафига это нужно?

Deoptim
Offline
Зарегистрирован: 20.01.2021

b707 пишет:

Стестняюсь спросить - а нафига это нужно?

Для подсчета общей производительности системы на разных платформах(32-bit или 64-bit) и ОС.

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Ну, допустим, информацию о времени компиляции по каждому файлу можно получить вот так:

в файле С:\Program Files (x86)\Arduino\hardware\arduino\avr\platform.txt редактируем строки

# These can be overridden in platform.local.txt
compiler.c.extra_flags=-ftime-report
compiler.c.elf.extra_flags=-ftime-report
compiler.S.extra_flags=-ftime-report
compiler.cpp.extra_flags=-ftime-report 

На выходе получим очень подробные тайминги по каждому файлу:

Execution times (seconds)
 phase parsing           :   0.03 (11%) usr    2130 kB (29%) ggc
 phase opt and generate  :   0.24 (86%) usr    4431 kB (61%) ggc
 phase last asm          :   0.01 ( 2%) usr      87 kB ( 1%) ggc
 cfg cleanup             :   0.01 ( 2%) usr      53 kB ( 1%) ggc
 df live regs            :   0.01 ( 3%) usr       0 kB ( 0%) ggc
 alias analysis          :   0.01 ( 2%) usr     147 kB ( 2%) ggc
 preprocessing           :   0.01 ( 4%) usr     665 kB ( 9%) ggc
 parser (global)         :   0.01 ( 2%) usr     956 kB (13%) ggc
 parser function body    :   0.01 ( 3%) usr     275 kB ( 4%) ggc
 tree VRP                :   0.01 ( 2%) usr     183 kB ( 3%) ggc
 tree PTA                :   0.01 ( 4%) usr      17 kB ( 0%) ggc
 tree FRE                :   0.01 ( 3%) usr      52 kB ( 1%) ggc
 dominance computation   :   0.01 ( 2%) usr       0 kB ( 0%) ggc
 expand                  :   0.01 ( 2%) usr     430 kB ( 6%) ggc
 CSE                     :   0.01 ( 3%) usr       8 kB ( 0%) ggc
 CPROP                   :   0.01 ( 2%) usr      70 kB ( 1%) ggc
 CSE 2                   :   0.01 ( 2%) usr      14 kB ( 0%) ggc
 combiner                :   0.01 ( 2%) usr     125 kB ( 2%) ggc
 integrated RA           :   0.02 ( 7%) usr     466 kB ( 6%) ggc
 reload CSE regs         :   0.01 ( 2%) usr      65 kB ( 1%) ggc
 scheduling 2            :   0.01 ( 3%) usr      15 kB ( 0%) ggc
 final                   :   0.01 ( 3%) usr     130 kB ( 2%) ggc
 symout                  :   0.01 ( 3%) usr     544 kB ( 7%) ggc
 variable tracking       :   0.01 ( 3%) usr     156 kB ( 2%) ggc
 var-tracking emit       :   0.01 ( 4%) usr      70 kB ( 1%) ggc
 remove unused locals    :   0.02 ( 5%) usr       0 kB ( 0%) ggc
 TOTAL                 :   0.28              7322 kB

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

написать в Винде прогу, которая будет нажимать в IDE кнопку компиляции и засекать время до появления файла с полностью готовой прошивкой

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

https://github.com/arduino/Arduino-cli может скомпилировать скетч из командной строки, запихаем её вызов в cmd:

@echo off
setlocal EnableDelayedExpansion
set "startTime=%time: =0%"

arduino-cli compile -b arduino:avr:uno C:\Arduino\MyTestSketch

set "endTime=%time: =0%"
set "end=!endTime:%time:~8,1%=%%100)*100+1!"  &  set "start=!startTime:%time:~8,1%=%%100)*100+1!"
set /A "elap=((((10!end:%time:~2,1%=%%100)*60+1!%%100)-((((10!start:%time:~2,1%=%%100)*60+1!%%100), elap-=(elap>>31)*24*60*60*100"
set /A "cc=elap%%100+100,elap/=100,ss=elap%%60+100,elap/=60,mm=elap%%60+100,hh=elap/60+100"

echo Start:    %startTime%
echo End:      %endTime%
echo Elapsed:  %hh:~1%%time:~2,1%%mm:~1%%time:~2,1%%ss:~1%%time:~8,1%%cc:~1%