Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.19;
Скачать: CL | DM;

Вниз

Компилятор Опять грешит   Найти похожие ветки 

 
oxffff ©   (2007-07-20 11:15) [0]

Простой код

procedure abc(out a:string);
begin
end;

procedure TForm1.Button1Click(Sender: TObject);
var a:string;
begin
abc(a);
end;

Работа

1.Перед вызовом abc компилятор добавляет полноценную очистку out параметра.
2.Далее в abc он еще добавляет обнуление параметра.

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

И это для всех финализируемых типов.

А если мы сделает вот так,

AAA=array[0..100] of string;

procedure abc(out a:AAA);
begin
end;

procedure TForm1.Button1Click(Sender: TObject);
var a:AAA;
begin
abc(a);
end;

Это уже более существенные потери


 
oxffff ©   (2007-07-20 11:17) [1]


>
> Таким образом эти инструкции лишние.


Обнуление в вызванной процедуре.


 
oxffff ©   (2007-07-20 12:22) [2]

Написал им
http://qc.codegear.com/wc/qcmain.aspx?d=49334


 
oxffff ©   (2007-07-20 21:52) [3]

Поставили статус Open. Так что будем ждать оптимизации


 
Суслик ©   (2007-07-20 23:28) [4]

небось пьер ле риш открыл...
там это уже было год назад где-то.
по поводу out параметров штук 50 репортов.


 
Суслик ©   (2007-07-20 23:30) [5]

2автар
кинь свои контакты на timokhov@gmail.com



Страницы: 1 вся ветка

Текущий архив: 2007.08.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
3-1178391336
Wiser87
2007-05-05 22:55
2007.08.19
Сортировка в DBEdit


2-1185551580
winsproot
2007-07-27 19:53
2007.08.19
Как сделать скин для своёй программы????


15-1184518961
iZEN
2007-07-15 21:02
2007.08.19
Нужна ли частная собственность на нематериальные продукты?


15-1183992453
Megabyte
2007-07-09 18:47
2007.08.19
Delphi 7 and MSSQL 2005


3-1178207147
RomanLN
2007-05-03 19:45
2007.08.19
Возможно ли создать таблицу не зная зарание сколько будет полей