Расчет требуемой памяти

161616
Offline
Зарегистрирован: 17.05.2018

Добрый день, уважаемые гости Форума. У меня ардуино с процессором atmega 128 с тактовой частотой 16Мц и объемом 128 Кб. Не подскажете как мне оценить объем требуемой памяти и занимаемого времени для расчет определенного алгоритма. Спасибо!

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

161616 пишет:

 ...как мне оценить объем требуемой памяти и занимаемого времени для расчет определенного алгоритма. Спасибо!

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

Пожалуйста.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

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

https://www.youtube.com/watch?v=yNt9_vMPjZU

sadman41
Offline
Зарегистрирован: 19.10.2016

Предлагаю количество переменных помножить на их размерность. И два на ум положить.

SLKH
Offline
Зарегистрирован: 17.08.2015

qwone пишет:

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

https://www.youtube.com/watch?v=yNt9_vMPjZU

Угу, к непредсказуемой траектории.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

161616 пишет:

Добрый день, уважаемые гости Форума. У меня ардуино с процессором atmega 128 с тактовой частотой 16Мц и объемом 128 Кб. Не подскажете как мне оценить объем требуемой памяти и занимаемого времени для расчет определенного алгоритма. Спасибо!

1. Для оценки требуемого объема оперативной памяти следует количество используемых переменных умножить на размер каждой переменной (т.е. на количество байт, которое нужно для ее хранения).

2. Для оценки времени выполнения алгоритма следует количество операций, которые выполняются при работе алгоритма, умножить на время выполнения каждой операции.

 

Понятнее стало?

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

А собственно "зачем"? Пишешь скетч, компиляешь и читаешь скока оно заняло места. Смотришь размер программы и примерно понимаешь сколько оно будет исполняться: RISC жеж! 1 команда = 1такт + чтение/запись в SRAM 1 команда = 2такта, итого в среднем 1.5 такта на размер программы. :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

тут вот недавно кто-то 30 мегабайт накомпилял, спрашивал, как втиснуть. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Arhat109-2 пишет:

Смотришь размер программы и примерно понимаешь сколько оно будет исполняться:

Sketch uses 450 bytes (1%) of program storage space. Maximum is 32 256 bytes.

Сколько примерно оно будет исполняться?

void setup() {
  while(1){}
}

void loop() {
}

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Нисколько. Оптимизатор выбросит все как ненужное. :)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А как же 450 байт?

nik182
Offline
Зарегистрирован: 04.05.2015

А вот так 50 байт.

int main()
{ while(1);}
void setup() {}
void loop() {}

 

Logik
Offline
Зарегистрирован: 05.08.2014

andriano пишет:

 

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

Может они чего про стек слышали и динамическое распределение памяти встречали за четверть века?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да пофиг на них. :)