Оптимизация что ли?

Форум для изучающих FPC и их учителей.

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

Оптимизация что ли?

Сообщение solomon243 » 10.05.2014 00:03:46

Пытаюсь нагрузить машину бесполезной работой:

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

{$mode objfpc}

uses Crt;

var
CyclesCount: Integer = 1000000;
i: Integer;
z: Integer = 1;

BEGIN
for i := 0 to CyclesCount do
   begin
   z:= z + i;
   if z = 0 then
      begin
         asm
            NOP;
         end;
      end;
   end;
END.


сырец компилируется. Запускается.
Но выполнение происходит слишком быстро. Может быть компилятор оптимизирует каким-либо образом код?? Как отключить такую оптимизацию?
solomon243
новенький
 
Сообщения: 13
Зарегистрирован: 09.05.2014 23:57:56

Re: Оптимизация что ли?

Сообщение Дож » 10.05.2014 01:51:20

Код: Выделить всё
[doj@korica ~/temp]$ fpc -O2 -al cycles.pas && cat cycles.s | sed -n '/BEGIN/,/END/p'
# [12] BEGIN
        pushl   %ebp
        movl    %esp,%ebp
        pushl   %ebx
        call    FPC_INITIALIZEUNITS
# [13] for i := 0 to CyclesCount do
        movl    TC_$P$HANGUP_$$_CYCLESCOUNT,%ebx
        movl    $0,U_$P$HANGUP_$$_I
        cmpl    U_$P$HANGUP_$$_I,%ebx
        jl      .Lj4
        subl    $1,U_$P$HANGUP_$$_I
        .balign 4,0x90
.Lj5:
        addl    $1,U_$P$HANGUP_$$_I
# [15] z:= z + i;
        movl    TC_$P$HANGUP_$$_Z,%eax
        addl    U_$P$HANGUP_$$_I,%eax
        movl    %eax,TC_$P$HANGUP_$$_Z
# [16] if z = 0 then
        testl   %eax,%eax
        jne     .Lj9
# [19] NOP;
        nop
.Lj9:
        cmpl    U_$P$HANGUP_$$_I,%ebx
        jg      .Lj5
.Lj4:
# [23] END.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Оптимизация что ли?

Сообщение solomon243 » 10.05.2014 09:48:07

я запилил в 100 раз больший итератор и вместо сложения - умножение. задержка теперь заметна на глаз.
solomon243
новенький
 
Сообщения: 13
Зарегистрирован: 09.05.2014 23:57:56


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru