Я делаю код:
- Код: Выделить всё
- var
 n, m: integer;
 procedure MyProc(zzz: longword);
 begin
 ...
 inc(n);
 inc(m);
 end;
 begin
 ...
 n := 1;
 m := 4;
 MyProc(5);
 MyProc(67);
 MyProc(55);
 MyProc(66);
 MyProc(45);
 ...
 MyProc(33);
 ...
 end;
Решил его оптимизировать:
- Код: Выделить всё
- var
 n, m: integer;
 iArr: array[1..40] of byte = (5, 67, 55, 66, 45, 64, ..., 33);
 procedure MyProc(zzz: longword);
 begin
 ...
 inc(m);
 end;
 begin
 ...
 m := 4;
 for n := 1 to 40 do
 MyProc(iArr[n]);
 ...
 end;
И в результате я получаю файл больше чем в первом коде. Пример приведён точно, только с другими данными и меняется только данный код. При попытке создать массив в константах код вырастет ещё больше.
Что вообще происходит? Как массив данных может быть больше такого же количества вызываемых процедур?
Добавлено спустя 4 минуты 51 секунду:
Мне теперь что, все данные делать внешними, чтоб точно знать, что они места занимать не будут?
Добавлено спустя 36 минут 5 секунд:
инициализировал массив вручную... размер программы стал меньше... Причём без разницы как инициализирую, массив байт или массив LongWord.
что за бред творится?
Добавлено спустя 3 минуты 15 секунд:
Делаю проверки на Linux.




 
  Это вообще мелочи на грани статистической погрешности. Лазарусу для своих нужд нужна куча хрени при компиляции, а без неё прирост мизерный - 80 байт при умной линковке
  Это вообще мелочи на грани статистической погрешности. Лазарусу для своих нужд нужна куча хрени при компиляции, а без неё прирост мизерный - 80 байт при умной линковке  Бинарь на 26 кило без внутренней оптимизации подрастает на 80 байт...
 Бинарь на 26 кило без внутренней оптимизации подрастает на 80 байт...