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

Вниз

Free Pascal via Delphi   Найти похожие ветки 

 
TUser ©   (2005-05-19 08:32) [40]

Вот на этом алгоритме FreePascal2.0.0 одназначно проигрывает по сравнению с Delphi7.
{$ifdef fpc}
{$mode delphi}
{$else}
{$apptype console}
{$endif}
program FPTest;
uses SysUtils, Classes, DateUtils;

var T, _T: TDateTime;
   A: array [0..1000000] of integer;
   i: integer;

function Get (Pos: integer): integer;

 function GetInt (S, E: integer): integer;
 var i, j, m, t: integer;
 begin
   i:=S; j:=E;
   repeat
     m:=(i + j) shr 1;
     while A[i] < A[m] do inc (i);
     while A[j] > A[m] do dec (j);
     if A[i] > A[j] then begin
       t:=A[i];
       A[i]:=A[j];
       A[j]:=t;
       end;
   until i >= j;
   if i > Pos then
     result:=GetInt(S,i)
     else
   if i = Pos then
     result:=A[i]
     else
     {i < Pos, and so j < Pos}
     result:=GetInt(j,E);
 end;

begin
  result:=GetInt(low(A),high(A));
end;

begin
 T:=now; _T:=now;
 Randomize;
 for i:=low(A) to high(A) do
   A[i]:=random(high(A));
 writeln ("Array done for "+inttostr(MilliSecondsBetween(_T,now))+" msec");

 _T:=now;
 writeln ("50000 element is "+inttostr(Get(50000)));
 writeln ("50000 element found for "+inttostr(MilliSecondsBetween(_T,now))+" msec");
 writeln;
 writeln ("Total time is "+inttostr(MilliSecondsBetween(T,now))+" msec");;
end.


PS. Мне хотелось протестировать рекурсивные алгоритмы, по результатам - Delphi быстрее раза в 2. А заполнение массива на FP вообще очень медленное - из-за функции Random.


 
Иван Шихалев ©   (2005-05-19 08:37) [41]

Ключики -Or, -Ou были выставлены?


 
TUser ©   (2005-05-19 10:13) [42]

Нет, все по умолчанию, если вы про [40].


 
Иван Шихалев ©   (2005-05-19 10:24) [43]

По умолчанию оптимизация практически отсутствует. Максимальная -G3p3ru (если хочется, чтоб шло на i386/486, то -G3p1ru)


 
TUser ©   (2005-05-19 10:24) [44]

Но вобщем, если поставить эти флаги, а еще хорошо и -О3, то рекурсии эти действительно быстрее работают, хотя random продолжает тормозить. Кстати, dcc32 и при включенной и выключенной оптимизацити одинаково работает.


 
Иван Шихалев ©   (2005-05-19 10:25) [45]

А умолчание корректно сравнивать разве что с Delphi с отключенной оптимизацией. Хотя и не совсем, возможно.


 
Иван Шихалев ©   (2005-05-19 10:27) [46]

Тьфу, имел в виду, конечно -OG3p3ru

Кстати, dcc32 и при включенной и выключенной оптимизацити одинаково работает.

А вот это странно...


 
Иван Шихалев ©   (2005-05-19 10:32) [47]

Насчет -O3 - глючит по черному, увы...


 
VMcL ©   (2005-05-19 13:02) [48]

>>TUser ©   (19.05.05 10:24) [44]

>Кстати, dcc32 и при включенной и выключенной оптимизацити одинаково работает.

Это не так. Скорее всего, Вы не выключали оптимизацию в IDE. DCC32 подтягивает настройки из CFG файла, AFAIR.


 
Иван Шихалев ©   (2005-05-19 13:22) [49]

А разве параметры командной строки не приоритетней CFG?


 
Jeer ©   (2005-05-19 13:28) [50]

После шаманства с опциями см. результат
http://hlab.newmail.ru


 
TUser ©   (2005-05-19 13:29) [51]

А у меня cfg вообще нет - набрано все в FAR"е, откомпилировано из командной строки. В IDE вообще не открывал.


 
TUser ©   (2005-05-19 13:35) [52]

Хотя, после отключения оптимизации в Delphi IDE, действительно помедленнее стало. Тогда вопрос - а зачем тогда вообще нужен -O в командной строке?


 
Иван Шихалев ©   (2005-05-19 13:39) [53]

Jeer ©   (19.05.05 13:28) [50]

-OGrup3p3 - супершаманство какое-то (не указан уровень основной оптимизации, зачем-то дважды указан тип процессора). По идее - -OGru2p3.


 
Jeer ©   (2005-05-19 14:31) [54]

Описка д.б. OGru3p3
По Вашей просьбе OGru2p3 см. там же


 
Иван Шихалев ©   (2005-05-19 14:45) [55]

В целом ожидаемо, но почему на Float FPC лучше?.. Странно.


 
Jeer ©   (2005-05-19 14:54) [56]

Размер exe
D5 - 62k
FP - 140k

До выноса в отдельный юнит и использования классов было
D5 - 40k
FP - 80k


 
VMcL ©   (2005-05-19 14:54) [57]

>><>TUser ©   (19.05.05 13:35) [52]

>Тогда вопрос - а зачем тогда вообще нужен -O в командной строке?

Опции командной строки имеют более высокий приоритет, чем опции проекта.


 
Jeer ©   (2005-05-19 15:17) [58]

Сортировка строк - на это стоит посмотреть

FP - 100%
D5 - 14%


 
Иван Шихалев ©   (2005-05-19 15:23) [59]

Офигеть


 
Иван Шихалев ©   (2005-05-19 15:25) [60]

А Дельфя часом не в каком-нибудь специальном порядке сортирует? Например "A"<"a"<"B"...


 
Jeer ©   (2005-05-19 16:32) [61]

Используется стд функция AnsiCompare.
В D5 это обертка над winapi CompareStr
Что в FP не знаю, но это может быть и не со сравнение связано, а с обменом через переменные.


 
Иван Шихалев ©   (2005-05-19 17:14) [62]

Все может быть... Но разница очень уж огромная... Если б FPC тормозил, я б еще понял, но у D5 - очень хороший оптимизатор...


 
Jeer ©   (2005-05-19 17:27) [63]

Следующая глава - работа с целыми числами
http://hlab.newmail.ru
На рекурсии FP проваливается, это точно.
А в остальном хорош.


 
Иван Шихалев ©   (2005-05-19 17:32) [64]

А какой тест по рекурсии?


 
False_Delirium ©   (2005-05-19 17:54) [65]

SetThreadPriority какой ?


 
Jeer ©   (2005-05-19 18:04) [66]

Иван Шихалев ©   (19.05.05 17:32) [64]
А ты посмотри там есть исходники - факториал, рекурсивно.

False_Delirium ©   (19.05.05 17:54) [65]
Все в равных условиях и особых проблем это не вызывает.


 
False_Delirium ©   (2005-05-19 18:16) [67]

Что значит в равных условиях ?
Смысл тестов непонятен, если есть вероятность погрешностию.


 
Jeer ©   (2005-05-19 18:20) [68]

False_Delirium ©   (19.05.05 18:16) [67]

Если мы с тобой бежим по одно дорожке и дует встречный ветер, то он дует обоим в лицо.

>есть вероятность
Вероятность есть всегда и во всем:)
Важнее ее величина.


 
False_Delirium ©   (2005-05-19 18:28) [69]

Jeer ©   (19.05.05 18:20) [68]

Мне не понятна технология проведения данных тестов. :)
По очереди запускаются два экзешника ?


 
Jeer ©   (2005-05-19 18:32) [70]

А что, надо одновременно ?

Или Вы считаете, что на компьютере в это время пишуться болванки, идет фильм, отдаются файлы и работает сотня пользователей одновременно ?


 
False_Delirium ©   (2005-05-19 18:41) [71]

Необходимо учесть, что может быть погрешность именно из-за этого.

Это не сложно - выставить приоритет ? Зато на душе спокойней. :)


 
Иван Шихалев ©   (2005-05-20 11:46) [72]

А нельзя ли для полноты картины сравнить еще с Virtual и TMT Pascal?


 
Jeer ©   (2005-05-20 12:29) [73]

Ребят, я ж не безразмерная:)

Когда-то сравнивал, не помню уж чем там дело кончилось.
Для начала пройдусь по разным видам тестов для FP/D5.
Собственно, меня поэтому и заинтересовала затея, т.к. рассматриваю возможность FP в embedded system на *nix платформах.


 
Jeer ©   (2005-05-20 12:31) [74]

P.S.
Если в этой ветке это мало кому интересно могу перейти во FreePascal, может и надо было с начала так сделать.

По поводу корректности измерения временных параметров - все путем и под контролем.
Не вижу особой необходимости с изменением приоритетов.


 
Иван Шихалев ©   (2005-05-20 12:49) [75]

Давай во Free Pascal. Или вовсе на http://freepascal.ru/forum/


 
Jeer ©   (2005-05-20 13:05) [76]

Иван Шихалев ©   (20.05.05 12:49) [75]

Ok.  На http://freepascal.ru/forum/
Сделайте там постоянную ссылку на hlab.newmail.ru,
ну а топик откроем.

Здесь тема закрыта.
(AutoModerator) :)


 
Иван Шихалев ©   (2005-05-20 13:19) [77]

Ссылка добавлена в "Ссылки - Delphi и Pascal"

OK - закрываем тему.



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

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

Наверх




Память: 0.62 MB
Время: 0.026 c
3-1115148002
Genry
2005-05-03 23:20
2005.06.06
Упаковка и сборка мусора в Interbase


11-1098741069
dan
2004-10-26 01:51
2005.06.06
edit box without frame


14-1116314868
blackman
2005-05-17 11:27
2005.06.06
О Москве


14-1116264692
Ломброзо
2005-05-16 21:31
2005.06.06
Их нравы


1-1115721489
Manfred8
2005-05-10 14:38
2005.06.06
Как удалить exe Файл после завершения его работы?