Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 01.08.2018, 20:21   #1
type_Oleg
Профессионал
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Адрес: Хазарский каганат
Сообщений: 2,431
Репутация: 1379
По умолчанию Швыдкомер, или сравнение 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 Кб, 33 просмотров)

Последний раз редактировалось type_Oleg; 01.08.2018 в 20:25.
type_Oleg вне форума   Ответить с цитированием
Старый 01.08.2018, 20:33   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,147
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Релиз сборку, оптимизации и т.п. включили, запускали без отладчика?
Alex11223 на форуме   Ответить с цитированием
Старый 01.08.2018, 20:35   #3
type_Oleg
Профессионал
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Адрес: Хазарский каганат
Сообщений: 2,431
Репутация: 1379
По умолчанию

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

Ну эти очевидно именно на размер и влияют.
Там наверняка больше опций.
... которые скорее всего сами установятся при выборе Release конфига.
http://wiki.freepascal.org/IDE_Windo...ns#Build_modes
Alex11223 на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите игру на Pascal, CodeBlock или Lazarus Devillion Помощь студентам 7 18.05.2016 22:25
Приведение к ПНФ на delphi(или Lazarus) vladok00777 Фриланс 2 24.11.2014 22: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


10:51.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru