Здравствуйте, ra88, Вы писали:
R>извиняюсь ещё раз. первое и второе указал вроде бы в ответе, третье думал следует из контекста, но на всякий случай
Прошу прощения, не понял надпись в скобочках
ещё раз:
R>1) С
R>2) gcc-4.3.2
R>3) linux
Спасибо. Теперь стало понятнее.
R>спасибо, действительно не знал такого слова. К сожалению, в моём случае структура выглядит несколько сложнее и неконстантная, т.е. она может принимать различные состояния.
Ну всё равно структуры часто можно агрегатами инициализировать. Правда в C, кажется, только константными выражениями...
R>Тем не менее многое прояснилось. Думаю, что справедливо полагать, что первый вариант должен быть быстрее. GCC переводит статическую структуру в данном случае в заклинание типа
R>R> 98 .local my_var
R> 99 .comm my_var,16,16
R>
R>что на сколько я понимаю означает, что резервируется память в (в данном случае) в 16 байт с соответствующиим выравниванием и закрепляется за my_var, который потом и используется в коде.
Ну да. Кроме того, обычно доступ к полю, это не только получение откуда-то указателя на структуру, но и добавление к нему смещения поля. А в случае статической структуры компилятор может сразу, во время компиляции и линковки найти нужный адрес, типа my_var + my_field_offset, и использовать в инструкциях непосредственно его...
Правда тут есть одна тонкость. Такого рода адреса при загрузке приложения в память имеют свойство перенастраиваться загрузчиком задачи, если "родные" адреса загрузки уже в адресном пространстве заняты. Я не знаю как эти дела делаются в линуксе, но знаю, как в винде. Соответственно код может быть как-то модифицирован компилятором так, чтобы уменьшить число страниц памяти, подвергающихся модификации при загрузке.
Так что точный ответ про быстродействие на самом деле может дать только тест...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском