Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизГлобальные или локальные переменные? Найти похожие ветки
← →
Mr tray (2006-06-07 00:14) [0]Здравствуйте. Тут такая ситуация: есть процедура, которая вызывается довольно часто (где то каждые 2-3 секунды). Следует ли сделать по этому поводу все переменные, использующиеся в ней, глобальными, чтобы не производилось постоянное выделение и освобождение памяти, которое будет замедлять работу проца.
← →
Джо © (2006-06-07 00:18) [1]> Следует ли сделать по этому поводу все переменные, использующиеся
> в ней, глобальными, чтобы не производилось постоянное выделение
> и освобождение памяти, которое будет замедлять работу проца.
Не следует. Ничего не будет выделяться, будет просто использоваться заранее зарезервированное место на стеке и всё.
← →
Mr tray (2006-06-07 01:33) [2]ясно, спасибо
← →
Mr tray (2006-06-07 01:42) [3]а вот если, допустим, такая ситуация: существуют несколько процедур, каждая из которых имеет свои локальные переменные. Для каждой переменной кождой процедуры выделется место на стеке? А то, если нету такого, что какая-то из этих процедур вызывается другой, можно сделать глобальные переменные вместо локальных. Я вот о чем:
procedure a(s:string);
var
i,n:integer;
begin
n:=length(s);
for i:=1 to n do
s[i]:="0";
end;
procedure b(s:string);
var
i,n:integer;
begin
n:=length(s);
for i:=1 to n do
s[i]:=chr(ord(s[i])+1);
end;
передеать в:
var
i,n:integer;
procedure a(s:string);
begin
n:=length(s);
for i:=1 to n do
s[i]:="0";
end;
procedure b(s:string);
begin
n:=length(s);
for i:=1 to n do
s[i]:=chr(ord(s[i])+1);
end;
← →
tButton © (2006-06-07 04:29) [4]глобальная переменная не может быть счётчиков в цикле... по крайней мере - в D5 не может =)
← →
Zeqfreed © (2006-06-07 06:28) [5][3] Mr tray (07.06.06 01:42)
В данном коде скорее всего даже не будет использован стек, переменные будут помещены в регистры общего назначения оптимизатором.
← →
balepa © (2006-06-07 10:28) [6]Zeqfreed © (07.06.06 06:28) [5]
переменные будут помещены
В eax "адрес" S ?
← →
Zeqfreed © (2006-06-07 10:50) [7]
> В eax "адрес" S ?
Это уже надо смотреть ассемблерный листинг, тем более для различных версий компилятора он будет отличаться.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c