глобальные переменные
От: ra88  
Дата: 20.01.09 17:28
Оценка:
Здравствуйте!

У меня вопрос больше академического характера Просьба отнестись к этому вопросу адекватно.


Скажем, мне надо производить какие-то действия и при этом данные, сопровождающие эти действия, хранятся в некоторой структуре и активно ими используются. При этом вряд ли будет создаваться больше одной переменной типа этой структуры.

у меня два варианта возможного дизайна. В первом я объявляю статическую перемнную типа структуры и при где-нибудь её инициализирую, а потом где-нибудь удаляю. При этом все функции пользуются только этой переменной.
Первый:
....
typedef struct {
  ...
  ...
} my_type_t;

static my_type_t my_var;

int create_my_var();
int release_my_var();

int do_something1();
int do_something2();
....


Во втором варианте я предоставляю пользователю завести переменную типа структуры и потом каждая функция получает её как параметер.
Второй:
....
typedef struct {
  ...
  ...
} my_type_t;

int create_my_var(my_type_t*);
int release_my_var(my_type_t*);

int do_something1(const my_type_t*);
int do_something2(const my_type_t*);
....


Вопрос: Есть ли какое-то преимущество одного из методов с точки зрения быстродействия?

Во втором варианте вроде бы более или менее понятно. При вызове функции адрес структуры помещается в регистер, вызывается цалл и функция берёт адрес из регистра.
Что происходит в первом варианте?
while true;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.