Форум: "Прочее";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];
Внизпередавать или создавать заново Найти похожие ветки
← →
NERO (2009-10-20 18:35) [0]Здравствуйте, уважаемые!
Подскажите пожалуйста, что эффективнее всего использовать, это:
procedure get_http;
var HTTP:TIdHTTP;
s:TSringList;
begin
...
HTTP:=TIdHTTP.create(nil);
HTTP.HandleRedirects:=True;
HTTP.ProtocolVersion:=pv1_0;
s:=HTTP.Get("http://google.ru");
HTTP.Free;
end;
procedure some_proc;
begin
while true do // бесконечный цикл
begin
get_http;
...
end;
end;
или все-таки вот это:
procedure get_http(const http:TIdHTTP);
var s:TSringList;
begin
...
s:=HTTP.Get("http://google.ru");
end;
procedure some_proc;
var HTTP:TIdHTTP;
begin
HTTP:=TIdHTTP.create(nil);
HTTP.HandleRedirects:=True;
HTTP.ProtocolVersion:=pv1_0;
while true do // бесконечный цикл
begin
get_http(HTTP);
...
end;
HTTP.Free;
end;
P.S. var s:TSringList в расчет не берем :)
← →
DVM © (2009-10-20 18:40) [1]
> Подскажите пожалуйста, что эффективнее всего использовать,
> это:
Один фиг по сравнению со скоростью выполнения HTTP.Get
← →
NERO (2009-10-20 18:53) [2]Конечно с HTTP пример получился не совсем удачным, просто хотелось бы знать на будущее как эффективней распределяться с создаваемыми/уничтожаемыми классами. Например если прога будет бесконечно создавать/уничтожать класс не возникнет ли при этом утечки памяти когда нибудь? Если рассудить логичеки то напрашивается закономерный вопрос, зачем создавать и уничтожать класс, если заранее известно что этот класс нужно будет создавать вновь. И тут же напрашивается следующий вопрос а что собственно говоря происходит при передачи динамического класса? Происходит ли его повторное создание уничтожение в передаваемой процедуре или нет и не будет ли утечки памяти в этом случае?
← →
TUser © (2009-10-20 19:51) [3]
> Например если прога будет бесконечно создавать/уничтожать
> класс не возникнет ли при этом утечки памяти когда нибудь?
>
Если возникнет - значит класс написан неправильно. Так что лучше передавай, - ошибку (утечку) ты заметишь раньше. Имхо.
← →
qwer_qwer (2009-10-20 19:54) [4]
> И тут же напрашивается следующий вопрос а что собственно
> говоря происходит при передачи динамического класса?
Ты никогда не передаёшь в качестве параметра экземпляр класса. Передаётся ссылка на объект.
Соответственно, ни о каком автоматическом пересоздании не может идти
← →
DVM © (2009-10-20 19:55) [5]
> Например если прога будет бесконечно создавать/уничтожать
> класс не возникнет ли при этом утечки памяти когда нибудь?
>
Если класс написан без ошибок, то максимум что возникнет - это фрагментация памяти. Другое дело, что класс может быть огромным и медленно создаваемым, тогда если критична скорость, то да, лучше может один раз его создать, если такое возможно. С другой стороны, создание и уничтожение класса по месту повышает автономность и назависимость отдельных частей кода. Короче оба варианта могут быть использованы к месту.
> И тут же напрашивается следующий вопрос а что собственно
> говоря происходит при передачи динамического класса?
В процедуру передается указательн на этот экземпляр класса, т.е. адрес где он расположен в памяти.
> Происходит ли его повторное создание уничтожение в передаваемой
> процедуре или нет и не будет ли утечки памяти в этом случае?
>
Нет конечно.
← →
RWolf © (2009-10-20 19:56) [6]
> зачем создавать и уничтожать класс, если заранее известно
> что этот класс нужно будет создавать вновь.
незачем.
с другой стороны, заострять на этом внимание нужно только при необходимости оптимизации скорости выполнения рассматриваемого алгоритма, т.е. редко.
> а что собственно говоря происходит при передачи динамического
> класса? Происходит ли его повторное создание уничтожение
> в передаваемой процедуре или нет и не будет ли утечки памяти
> в этом случае?
в Delphi происходит передача ссылки на класс, на не класса.
← →
NERO (2009-10-20 20:02) [7]Ответ на свой вопрос получил. Всем спасибо.
← →
Дмитрий С © (2009-10-21 10:13) [8]Хочется добавить еще try finally
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c