Форум: "Потрепаться";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.014 c