Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2018, 19:21   #1
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию Швыдкомер, или сравнение Delphi и Lazarus

Решил сравнить быстродействие получаемых исполняемых кодов.
На компе стоят 2 ОС - Windows 7 и Linux Mint 19 XFCE.
Исходник ( одинаковый для всех ) , часть модуля формы:
Код:
implementation
uses Math;
{$R *.dfm}
function fun1(a:Integer):Integer;
begin
 Result:=((a mod 7) mod 3)div 2;
end;
function fun2(a:Double):Double;
begin
 if a>0
  then Result:=Sin(a)/Ln(a)+Power(a,1/a)
  else Result:=1.5;
end;
function fun3(a:Integer):Integer;
begin
 if a=0 then Result:=1 else Result:=a*fun3(a-1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var t0,x:Double;
  i,n,k:Integer;
begin
 n:=2000000000;
 t0:=Now;
 for i:=1 to n do
  k:=i mod 11;
 Memo1.Lines.Add(FloatToStr(86400*(Now-t0))); // --> в секундах
 n:=200000000;
 t0:=Now;
  for i:=1 to n do
  k:=fun1(i);
 Memo1.Lines.Add(FloatToStr(86400*(Now-t0)));
 n:=20000000;
 t0:=Now;
  for i:=1 to n do
  x:=fun2(1/i+(i mod 7));
 Memo1.Lines.Add(FloatToStr(86400*(Now-t0)));
 n:=100000000;
 t0:=Now;
  for i:=1 to n do
  k:=fun3(i mod 12);
 Memo1.Lines.Add(FloatToStr(86400*(Now-t0)));
end;
end.
Результат - см. рис. Сам не ожидал такой разницы.
Изображения
Тип файла: png DLL.png (19.7 Кб, 176 просмотров)

Последний раз редактировалось type_Oleg; 01.08.2018 в 19:25.
type_Oleg вне форума Ответить с цитированием
Старый 01.08.2018, 19:33   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Релиз сборку, оптимизации и т.п. включили, запускали без отладчика?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.08.2018, 19:35   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Релиз сборку, оптимизации и т.п. включили, запускали без отладчика?
Нет.
Я думал, это вроде только на размер исп. файла влияет
Щас попробую...
type_Oleg вне форума Ответить с цитированием
Старый 01.08.2018, 19:44   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

В параметрах проекта установил флажки :
"Умная компоновка" (-СХ);
"Умная компоновка" (-ХХ);
"Использовать внешний файл отладочных символов GDB"(-Xg);
"Вырезать символы из исполняемого файла"(-Xs).
Размер .exe уменьшился в 8 раз, но время выполнения не изменилось.
type_Oleg вне форума Ответить с цитированием
Старый 01.08.2018, 19:49   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну эти очевидно именно на размер и влияют.
Там наверняка больше опций.
... которые скорее всего сами установятся при выборе Release конфига.
http://wiki.freepascal.org/IDE_Windo...ns#Build_modes
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите игру на Pascal, CodeBlock или Lazarus Devillion Помощь студентам 7 18.05.2016 21:25
Приведение к ПНФ на delphi(или Lazarus) vladok00777 Фриланс 2 24.11.2014 21:37
Помогите использовать стандартный диалог-калькулятор в среде Lazarus (или Delphi) M@N Lazarus, Free Pascal, CodeTyphon 8 08.08.2014 07:52
сравнение 1-ой буквы строкового элемента массива с какой нибудь любой буквой (lazarus) arsenalfc Помощь студентам 7 22.05.2012 00:40
Циклы в Lazarus или в Delphi, особой разницы нет! venomdanger Lazarus, Free Pascal, CodeTyphon 1 06.10.2010 17:50