Инициализация переменных локальной функции занимает время обработки? - PullRequest
1 голос
/ 30 января 2010

Инициализация переменных локальной функции занимает время обработки? e.g.:

void foo ( void ) {
    char *str = "hello";
    int num = 3;
}

Или, как и глобальные переменные, их значение уже задано в разделе только для чтения двоичного файла?

Другими словами: потребовалось бы много времени для вызова функции, которая имеет много локальных переменных, по сравнению с функцией, у которой ее нет?

Edit: Я вижу, что многие здесь злятся, потому что кажется, что я пытаюсь оптимизировать свой код очень требовательным / плохим способом, который не должен рассматриваться. Я знаю об этом. Я задал этот вопрос только для того, чтобы понять, как вещи ведут себя и функционируют, а не по причинам оптимизации. Спасибо. Кстати, возможно, мои коды сидит на MCU с низким энергопотреблением? Рассмотрим другие варианты, ПК не единственный.

Ответы [ 2 ]

3 голосов
/ 30 января 2010

Это не много времени, но да. это требует времени.

В этом примере текст "привет" уже будет где-то жить как постоянное значение, но str должен быть установлен, чтобы указывать на него во время выполнения.

и значение 3 должно быть сохранено в num

0 голосов
/ 30 января 2010

Если вы любите приключения, попробуйте разбить ваш исполняемый файл на objdump с дополнительными переменными и без них.Вы увидите, что компилятор вставляет дополнительные инструкции (либо устанавливает регистр, либо выполняет операцию загрузки), когда вы создаете больше локальных переменных в своей функции.Каждая инструкция занимает ненулевое время ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...