Новый Большой проект на FPC - стоит ли рискнуть?

Любые обсуждения, не нарушающие правил форума.

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

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение Шурик Сетевой » 25.06.2011 13:38:34

carrots писал(а):Java по сути своей работы не может достичь нужных для этого скоростей, так как она все таки остается интерпретируемым движком, хотя и интерпретирует специально подготовленный оптимизированный код, этот код не является последовательностью команд процессора.

Если у вас сам код(не системные функции) на java исполняется быстрее чем асемблеровский код - значит вы делаете что-то очень неправильно.

К статьи, почему eclipse так тормозит на медленных машинах?

На хабре недавно было грамотное разъяснение, что именно и в какой последовательности происходит в java машине.
http://habrahabr.ru/blogs/java/122061/

Учитывая, что FP сам по себе не высшее достижение в компиляторах, можно ожидать сравнимой производительности.
А по покрытию типовых задач фреймворками и готовыми подсистемами и сравнивать смешно.

PS: Вся ветка страшно напоминает холивар времен противостояния адептов ассемблера и C.
Шурик Сетевой
новенький
 
Сообщения: 11
Зарегистрирован: 05.03.2009 21:42:42

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение carrots » 25.06.2011 15:22:38

В античные времена существовали разные школы, которые принципиально отстаивали свое учение, для которых честью было защитить и отстоять его. По гречески такое отношение к своей позиции называлось αἵρεσις (ересь - «выбор, направление, мнение» ) (сейчас смысл этого слова очень сильно изменился). Почти все философы были еретиками, даже если-бы они сами поняли что они не правы — они бы все равно продолжали бы отстаивать свою точку зрения пока их не признают правыми.
Эта ветка очень похожа на спор еретиков (в античном смысле этого слова).

Jit — хорошая штука, которая иногда срабатывает, но суть не в том, суть в том что сразу готовый машинный код не может относительно быть медленее того который был подготовлен или исполняется этими-же машинными кодами.
Я не говорю что Java плоха и медленна, но она пока-что подходит не для всех случаев жизни.
Подходит ли она для ваших нужд, решать вам.
Аватара пользователя
carrots
постоялец
 
Сообщения: 138
Зарегистрирован: 28.03.2008 02:13:02

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение FedeX » 25.06.2011 15:30:47

суть в том что сразу готовый машинный код не может относительно быть медленее того который был подготовлен или исполняется этими-же машинными кодами.

В том то и дело, что может :D Ни один простой компилятор не имеет возможности оптимизировать код на основе информации о том как этот код исполняеться, потому, что он не "знает", как код будет исполняться.. Для JIT эта информация доступна! Поэтому он может применят и оптимизации реализованные в большинстве простых, "статических" компиляторов, а также оптимизации для них недоступные, основанные на оценке поведения программы во время выполнения..

То что ява не подходит для всех случаев жизни никто вроде и не спорил :wink:
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение vada » 29.06.2011 14:09:21

Вот! Нашел древнюю пузомерку по поводу тормознутости JAVA. Кому не влом прочитать пару сотен коментов, то это тут.
http://www.linux.org.ru/news/java/63922 ... ent-642260
Выводы сами делайте.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение alexs » 03.07.2011 19:45:49

vada писал(а):Вот! Нашел древнюю пузомерку по поводу тормознутости JAVA. Кому не влом прочитать пару сотен коментов, то это тут.
http://www.linux.org.ru/news/java/63922 ... ent-642260
Выводы сами делайте.

Мне интересно - а методы класса Random и метод Sort на чём написан в приведённом исходнике?
Больше там вороде узких мест нет.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение vada » 04.07.2011 10:21:31

Что касается JAVA, то все написано нма ней самой. В поставке исходники есть. Можно посмотреть.
Вот тут на досуге написал аналогичный тест на паскале. Был озадачен. :( Если генерация и сортировка на уговне C и JAVA, то поиск вообще никакой.
Я не дождался пока отработает выборка 10 лимонов элементов. Ограничился 10000. Для сортировки и поиска воспользовался классом TList.
Может я чего не так делаю?
Код: Выделить всё
program TestPas;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, SysUtils, CustApp
  { you can add units after this };

const
  count = 10000000;
  D = 1000;

type

  { Test }

  Test = class(TCustomApplication)
  protected
    procedure DoRun; override;
  public
    constructor Create(TheOwner: TComponent); override;
    destructor Destroy; override;
    procedure WriteHelp; virtual;
  end;

  function IntListCompare(Item1, Item2: Pointer): Integer;
  var
    I1, I2: LongInt;
  begin
    I1 := LongInt(Item1^);
    I2 := LongInt(Item2^);
    if (I1 < I2)
      then Result := -1
      else if (I1>I2)
             then Result := 1
             else Result := 0;
  End;

{ Test }

procedure Test.DoRun;
var
  ErrorMsg: String;
  PInt: PLongInt;
  I, N: LongInt;
  Ar: array of LongInt;
  ArList: TList;
  Tic0, Tic1, Tic2, Tic3, Tic4, Tic5: TDateTime;
begin
  // quick check parameters
  ErrorMsg:=CheckOptions('h','help');
  if ErrorMsg<>'' then begin
    ShowException(Exception.Create(ErrorMsg));
    Terminate;
    Exit;
  end;

  // parse parameters
  if HasOption('h','help') then begin
    WriteHelp;
    Terminate;
    Exit;
  end;

  { add your program here }
  WriteLn('1. Fill array size of '+IntToStr(count));
  Tic0 := Time;
  WriteLn('   Start '+TimeToStr(Tic0));
  SetLength(Ar, count);

  // Генерация массива случайных целых
  ArList := TList.Create;

  for I:=0 to count-1 do
  begin
    Ar[I] := Random(count);
    ArList.Add( Addr(Ar[I]) );
  End;
  Tic1 := Time;
  WriteLn('   Stop  '+TimeToStr(Tic1));
  WriteLn('   Total '+FloatToStrF( (Tic1-Tic0)*100000, ffFixed, 5, 2 )+' sec' );
  //for I:=0 to 50 do
  //  WriteLn('I='+IntToStr(I)+' Value='+IntToStr(Ar[I]));

  // Сортировка массива
  WriteLn('2. Sort array');
  Tic2 := Time;
  WriteLn('   Start '+TimeToStr(Tic2));
  ArList.Sort(@IntListCompare);
  Tic3 := Time;
  WriteLn('   Stop  '+TimeToStr(Tic3));
  WriteLn('   Total '+FloatToStrF( (Tic3-Tic2)*100000, ffFixed, 5, 2 )+' sec' );

  //for I:=0 to 50 do
  //  WriteLn('I='+IntToStr(I)+' Value='+IntToStr(Integer(ArList.Items[I]^)));

  // Выборка из сортированного списка
  WriteLn('3. Binary search '+IntToStr(count div D)+' items.');
  Tic4 := Time;
  WriteLn('   Start '+TimeToStr(Tic4));

  //for I:=0 to count-1 do    // Не дождался :(
  for I:=0 to count div D do
  begin
    N := ArList.IndexOf( Addr(Ar[I]) );
    if (N = -1)
    then begin
      WriteLn('Item index='+IntToStr(I)+' Value='+IntToStr(Ar[I])+' not found!')
    End;
  End;
  Tic5 := Time;
  WriteLn('   Stop  '+TimeToStr(Tic5));
  WriteLn('   Total '+intToStr(D)+' items '+FloatToStrF( (Tic5-Tic4)*100000, ffFixed, 5, 2 )+' sec' );

  ArList.Free;
  // stop program loop
  ReadLn;

  Terminate;
end;

constructor Test.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  StopOnException:=True;
end;

destructor Test.Destroy;
begin
  inherited Destroy;
end;

procedure Test.WriteHelp;
begin
  { add your help code here }
  writeln('Usage: ',ExeName,' -h');
end;

var
  Application: Test;

{$IFDEF WINDOWS}{$R TestPas.rc}{$ENDIF}

begin
  Application:=Test.Create(nil);
  Application.Title:='PAS Test';
  Application.Run;
  Application.Free;
end.


Ошибка в печати там есть. Вместо
WriteLn(' Total '+intToStr(D)+' items '+FloatToStrF( (Tic5-Tic4)*100000, ffFixed, 5, 2 )+' sec' );
надо
WriteLn(' Total '+intToStr(count div D)+' items '+FloatToStrF( (Tic5-Tic4)*100000, ffFixed, 5, 2 )+' sec' );
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение Odyssey » 04.07.2011 10:44:11

TList.IndexOf использует линейный поиск. Если реализация на Java использует двоичный, то разница в скорости объяснима.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение vada » 04.07.2011 11:03:52

Ну и нафига такой метод нужен? А если массив сортированный?
Может какой другой более интересный класс есть?
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение kipar » 04.07.2011 11:26:02

То ли в TList.Find, то ли в TStringList.Find реализован двоичный поиск.
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение vada » 04.07.2011 11:30:31

TList.Find нет такого метода. Да и StringList ни с какого боку - у меня целые числа. В строки их преобразовывать? Хорошо ли на элементарной задаче сразу костыли подставлять? Да и метод Find у StringList совсем не о том.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение Brainenjii » 04.07.2011 12:13:38

Так напишите наследника к TList'у с двоичным поиском, да сравните
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение vada » 04.07.2011 12:42:39

Вот! Начинаааается! :) А еще говорим про большой проект на FPC!
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение Mr.Smart » 04.07.2011 13:19:05

vada давайте всё таки отделять мух от котлет. А то всё упирается в библиотеки, которые то зачастую и не оптимизированы в сторону скорости выполнения. Если мы говорим FPC, то не используем библиотеки (FCL и т.д.) в случае с JAVA аналогично.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение vada » 04.07.2011 13:36:01

Нам тогда сравнивать нечего будет. :)
JAVA это не просто язык программирования, это прежде всего ПЛПТФОРМА.
Под это понятие я и пытался подогнать FPC, воспользовавшись наработками комунити.
То что код на праскале работает с удовлетворительной скоростью (мало проигрывает Си,...) никто и не спорит.
А вот в здравом уме начинать мало-мальски крупный проект из топика с написания базовой библиотеки.... эт не серьезно. :?
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Новый Большой проект на FPC - стоит ли рискнуть?

Сообщение WAYFARER » 04.07.2011 14:02:36

vada писал(а):А вот в здравом уме начинать мало-мальски крупный проект из топика с написания базовой библиотеки...

Так если бы все были "в здравом уме", то никогда бы не появилось столько хороших библиотек и инструментов))
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Пред.След.

Вернуться в Потрепаться

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

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

Рейтинг@Mail.ru