разный размер скомпилированного файла

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
virt
новенький
Сообщения: 35
Зарегистрирован: 01.12.2005 11:31:41

Сообщение virt »

Код: Выделить всё

start strip.exe main.exe
start upx.exe main.exe


После некоторых компиляций ,и выполнения приведенного выше bat файла размер exe - 78Kb ,после некоторых - 470 примерно. Исходный код не менялся (ни символа) ,параметры среды и компилятора не менялись.

Код: Выделить всё

program Talk;
{$threading on}
uses sysutils ,crt ,
     blcksock in'lib/blcksock.pas';

var finished : longint;
    ip,locip : string;

function f1 (p : pointer) : longint;
var s : string;
    DGS : TUDPBlockSocket;
begin
   DGS := TUDPBlockSocket.create;
   DGS.CreateSocket;
   DGS.Bind(locip,'2007');
   with DGS do
      writeln('binding DGSSend ',GetErrorDesc(LastError));
   DGS.Connect(ip,'2008');
   with DGS do
      writeln('connecting DGSSend ',GetErrorDesc(LastError));

   while true do
      begin
         readln(s);
{         DGS.SendBufferTo(@s,length(s) + 1);}
         DGS.SendString(s);
         writeln('Sender floods');
      end;


   InterLockedIncrement(finished);
   f1 := 0;
end;

function f2 (p : pointer) : longint;
var DGS : TUDPBlockSocket;
    s : string;
    k : longint;
begin
   DGS := TUDPBlockSocket.Create;
   DGS.CreateSocket;
   DGS.bind(locip,'2008');
   with DGS do
      writeln('binding DGSRecv ',GetErrorDesc(LastError));

   while true do
      begin
         try
            k := DGS.WaitingDataEx;
            while k > 0 do
               begin
                  s := DGS.RecvString(10);
                  writeln(s);
                  writeln('Receiver floods');
                  k := DGS.WaitingDataEx;
               end;
         except;

         end;
      end;


   InterLockedIncrement(finished);
   f2 := 0;
end;

begin
   finished := 0;
   writeln('remote ip::');
   readln(ip);
   writeln('local ip::');
   readln(locip);

   BeginThread(@f1);
   BeginThread(@f2);
   while finished < 2 do;
   readln;
end.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

После некоторых компиляций ,и выполнения приведенного выше bat файла размер exe - 78Kb ,после некоторых - 470 примерно. Исходный код не менялся (ни символа) ,параметры среды и компилятора не менялись.



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

ЗЫ. Также предлагаю указывать ОС, версию компилятора и какая среда. ;)
virt
новенький
Сообщения: 35
Зарегистрирован: 01.12.2005 11:31:41

Сообщение virt »

STAKANOV
Исходный код не менялся ,даже переносы строки те же и пробелы.
Непосредственно за 1 минуту до написания этого поста удали exe запустил fpc скомпилил ,получил после стрипа 470 опять ,все последующие компиляции дали 78Kb.
При упаковке 470килобайтного exe rarом размер снижается до 90Kb примерно.

fpc2.0.0
winXPsp1
freepascal ide 1.0.4
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

Непосредственно за 1 минуту до написания этого поста удали exe запустил fpc скомпилил ,получил после стрипа 470 опять ,все последующие компиляции дали 78Kb.

fpc каждый раз запускался с консольного окна?
virt
новенький
Сообщения: 35
Зарегистрирован: 01.12.2005 11:31:41

Сообщение virt »

Еще раз проверил только что.

Запускается ide открывается программа ,компилится(Alt + F9) -- размер 480 Кило ,компилится второй раз -- 78 Кило. Закрывается ide ,открывается ide ,открывается программа ,компилится -- 78 Кило.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

Похоже это баг в IDE. При первой компиляции явно одни ключи используются, а при дальнейших другие.
Ответить