Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проф. геймдев на Делфи [Delphi]


Страницы:   1 2 3 4 5 6 7 8

Unsigned ©   (2006-01-13 23:29:00) 

Доброго времени суток! Сразу оговорюсь что это тема не типа "Делфи вс Си".Хотелось бы услышать мнение знающих людей по-поводу : есть ли профессиональное будущее у программиста игр на Делфи? Или для того чтоб стать проффесионалом в игровой индустрии необходимо рано или поздно переходить на С, а геймдев на Делфи носит любительский характер?


MeF Dei Corvi   (2006-11-14 13:36:00) [1]


> а куда ж деваться-то? :)

Брать лыжи и в лес...


Fosgen   (2006-11-14 13:36:00) [2]

XProger, да он самый от IMP'а....


XProger   (2006-11-14 12:08:00) [3]

Fosgen, не Titan 2175 в обработке ли это? По скринам очень смахивает...


Ketmar   (2006-11-14 02:33:00) [4]

>[154] grisme(c) 14-Nov-2006, 02:26
>а куда ж деваться-то? :)
QNX.
%-)


grisme   (2006-11-14 02:26:00) [5]

>кто ж о нём говорит? более того: замер времени в винде вообще мало смысла имеет, потому что не RTOS.

а куда ж деваться-то? :)


Ketmar   (2006-11-14 02:18:00) [6]

>[152] MeF Dei Corvi(c) 14-Nov-2006, 01:17
>Либо марсианский компьютер :)
pIII/600. %-)

>GetTickCount
кто ж о нём говорит? более того: замер времени в винде вообще мало смысла имеет, потому что не RTOS.


MeF Dei Corvi   (2006-11-14 01:17:00) [7]


> что интересно: у меня результаты прямо противоположные.
> весело и радостно отстаёт D7. то ли тест таки дебильный
> (как и признаётся при запуске %-), то ли у меня марсианские
> Delphi.

Либо марсианский компьютер :) Тест дебильный, ассемблер всё-равно круче ;) GetTickCount - не лучший способ замера времени.


Fosgen   (2006-11-11 20:47:00) [8]

Возвращаясь к теме ветки - в подтверждение того что на Дельфи можно сделать полноценную игру:
Кибервойны: Прототип 2700 - чел писал в одиночку, на Дельфе. Потом у него перекупила контора Dragon Software и испортила, но издала. Но проект все-таки вышел в свет - это можно засчитать как продукт профессионального геймдева на Дельфи? Или что тогда - "профессиональный"?


Ketmar   (2006-11-11 15:03:00) [9]

Удалено модератором


Vansss   (2006-11-11 14:15:00) [10]

Delfhi это только начало!!!!!
потом идут более сложные языки типо С + +  и т.д.


Ketmar   (2006-11-05 15:01:00) [11]

что интересно: у меня результаты прямо противоположные. весело и радостно отстаёт D7. то ли тест таки дебильный (как и признаётся при запуске %-), то ли у меня марсианские Delphi.


MeF Dei Corvi   (2006-11-05 13:47:00) [12]


> http://itc.ua/article.phtml?ID=15800&IDw=33&pid=52

гм. Вчитался повнимательнее в это. Жуткий бред.


MeF Dei Corvi   (2006-11-05 13:45:00) [13]

Согласен, что тест бредовый и вообще подобное тестирование - безусловно глупость.


MeF Dei Corvi   (2006-11-05 13:41:00) [14]


> скажи проще: "имел я в виду отвечать за свои слова". ага?

Написать тест, охватывающий всё довольно сложно. Так уж и быть поддамся на твою провокацию и потестю D2006 и D7.
Тест писать не стал. Взял первый попавшийся из гугля.
program DelphiBenchV2;

{$APPTYPE CONSOLE}

uses
 SysUtils,
 classes,
 Windows,
 Math;

type
 TBenchMarkDelphi = class
 private
   startTime: Integer;
   stopTime: Integer;
   elapsedTime: Integer;
   function intArithmetic(const IntMax: Integer): Int64;
   function doubleArithmetic(const doubleMin, doubleMax: Double): Int64;
   function longArithmetic(const longMin, longMax: comp): Int64;
   function trig(const trigMax: double): Int64;
   function io(const ioMax: Integer): Int64;
   procedure Run;
 end;

function TBenchMarkDelphi.intArithmetic(const IntMax: Integer): Int64;
var
 intResult: Integer;
 i: Integer;
begin
 startTime := GetTickCount;
 intResult := 1;
 i := 1;

 while (i < intMax) do begin
   inc(i);
   dec(intResult, i);
   inc(i);
   inc(intResult, i);
   inc(i);
   intResult := intResult * i;
   inc(i);
   intResult := intResult div i;
 end;

 stopTime := GetTickCount;
 elapsedTime := stopTime - startTime;

 Writeln('Int arithmetic elapsed time: ' + IntToStr(elapsedTime) +
   ' ms with max of ' + IntToStr(intMax));
 Writeln(' i: ' + IntToStr(i));
 Writeln(' intResult: ' + IntToStr(intResult));
 Result := Int64(elapsedTime);
end;

function TBenchMarkDelphi.doubleArithmetic(const doubleMin, doubleMax: Double): Int64;
var
 doubleResult: double;
 i: double;
begin
 startTime := GetTickCount;
 doubleResult := doubleMin;
 i := doubleMin;

 while (i < doubleMax) do begin

   i := i + 1;
   doubleResult := doubleResult - i;
   i := i + 1;
   doubleResult := doubleResult + i;
   i := i + 1;
   doubleResult := doubleResult * i;
   i := i + 1;
   doubleResult := doubleResult / i;

 end;

 stopTime := GetTickCount;
 elapsedTime := stopTime - startTime;

 Writeln('Double arithmetic elapsed time: ' + IntToStr(elapsedTime) +
   ' ms with min of ' + FloatToStr(doubleMin) + ', max of ' + FloatToStr(doubleMax));
 Writeln(' i: ' + FloatToStr(i));
 Writeln(' doubleResult: ' + FloatToStr(doubleResult));
Result:=Int64(elapsedTime);end;

function TBenchMarkDelphi.longArithmetic(const longMin, longMax: comp): Int64;
var
 longResult: comp;
 i: comp;
begin
 startTime := GetTickCount;
 longResult := longMin;
 i := longMin;
 Set8087CW($133F);
 while (i < longMax) do begin

   i := i + 1;
   longResult := longResult - i;
   i := i + 1;
   longResult := longResult + i;
   i := i + 1;
   longResult := longResult * i;
   i := i + 1;
   longResult := longResult / i;

 end;

 stopTime := GetTickCount;
 elapsedTime := stopTime - startTime;

 Writeln('Long arithmetic elapsed time: ' + IntToStr(elapsedTime) +
   ' ms with min of ' + FloatToStr(longMin) + ', max of ' + FloatToStr(longMax));
 Writeln(' i: ' + FloatToStr(i));
 Writeln(' longResult: ' + FloatToStr(longResult));
 Result := Int64(elapsedTime);
end;

function TBenchMarkDelphi.trig(const trigMax: double): Int64;
var
 sine, cosine, tangent, logarithm, squareRoot, i: double;
begin
 startTime := GetTickCount;
 sine := 0;
 cosine := 0;
 tangent := 0;
 logarithm := 0;
 squareRoot := 0;
 i := 0;

 while (i < trigMax) do begin
   i := i + 1;
   sine := Sin(i);
   cosine := Cos(i);
   tangent := Tan(i);
   logarithm := Log10(i);
   squareRoot := Sqrt(i);
 end;

 stopTime := GetTickCount;
 elapsedTime := stopTime - startTime;

 Writeln('Trig elapsed time: ' + IntTostr(elapsedTime) +
   ' ms with max of ' + FloatToStr(trigMax));
 Writeln(' i: ' + FloatToStr(i));
 Writeln(' sine: ' + FloatToStr(sine));
 Writeln(' cosine: ' + FloatToStr(cosine));
 Writeln(' tangent: ' + FloatToStr(tangent));
 Writeln(' logarithm: ' + FloatToStr(logarithm));
 Writeln(' squareRoot: ' + FloatToStr(squareRoot));
 Result := Int64(elapsedTime);
end;

function TBenchMarkDelphi.io(const ioMax: Integer): Int64;
const textLine='abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz12345678 90abcdefgh';
var
 myLine: string;
 i: integer;
 F: textfile;
begin
 startTime := GetTickCount;
 i := 0;

 try

   AssignFile(F, 'c:\TestDelphi.txt');
   Rewrite(F);

   while (i < ioMax) do begin
     Writeln(F, textLine);
     Inc(i);
   end;
   CloseFile(F);

   i := 0;

   AssignFile(F, 'c:\TestDelphi.txt');
   Reset(F);

   while (i < ioMax) do begin
     Readln(F, myLine);
     inc(i);
   end;

   CloseFile(F);

 except
   on e: exception do Writeln(e.Message);
 end;

 stopTime := GetTickCount;
 elapsedTime := stopTime - startTime;

 Writeln('IO elapsed time: ' + IntToStr(elapsedTime) +
   ' ms with max of ' + IntToStr(ioMax));
 Writeln(' i: ' + IntToStr(i));
 Writeln(' myLine: ' + myLine);
 Result := Int64(elapsedTime);
end;

procedure TBenchMarkDelphi.Run;
var
 intArTime, doubleArTime, longArTime, trigTime, ioTime, totalTime: Int64;
begin
 Writeln('Start Delphi silly benchmark');

 intArTime := intArithmetic(1000000000);
 doubleArTime := doubleArithmetic(10000000000, 11000000000);
 longArTime := longArithmetic(10000000000, 11000000000);
 trigTime := trig(10000000);
 ioTime := io(1000000);
 totalTime := intArTime + doubleArTime + longArTime + trigTime + ioTime;

 Writeln('Total Delphi benchmark time: ' + IntToStr(totalTime) + ' ms');
 Writeln('End Delphi benchmark');
end;

var MyBench: TBenchMarkDelphi;

begin
 MyBench := TBenchMarkDelphi.Create;
 MyBench.Run;
 MyBench.Free;
end.

Тест запускался несколько раз. Вот усредненное полное время выполнения тестов для D7 и D2006:
D7: 99836
D206: 103570
Разница около 5%. Разница, конечно, незначительная, но за свои слова я всё же отвечаю.
В D2006 правда стоит FastMM v4.62, а в D7 - стандартный, но сильно повлиять это не должно.
Компилятора ни от D2, D3, ни от D5 у меня нет. Судя по тестам на
http://itc.ua/article.phtml?ID=15800&IDw=33&pid=52
код сгенерированный D2 и D3 работал почти в два раза быстрее аналога на D5-D7.

А вообще, сколько тестов, столько и результатов. Например, по некоторым тестам C# значительно обгонял D7, по моему опыту C# не быстрее D7 (но быстрее D2006). Тесты, которые проводили любители FPC показывали, что FPC быстрее Delphi. Судя по вышеприведенному тесту, FPC вообще курит в сторонке вне зависимости от настроек компиляции, т.к. в лучшем случае FPC проигрывал процентов 20.


Ketmar   (2006-11-05 03:54:00) [15]

>[143] MeF Dei Corvi(c) 5-Nov-2006, 01:13
>Лично мне лениво ставить D5 и D7, чтобы тестить.
скажи проще: "имел я в виду отвечать за свои слова". ага?


MeF Dei Corvi   (2006-11-05 01:13:00) [16]


> слив защитан.

Взаимно. Лично мне лениво ставить D5 и D7, чтобы тестить.


Ketmar   (2006-11-04 23:19:00) [17]

слив защитан.


MeF Dei Corvi   (2006-11-04 21:42:00) [18]


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

Я для себя уже сделал выводы о производительности. Сказанное мною о качестве компиляторов, естественно ИМХО, как и вообще всё, что я говорю. Переубеждать окружающих не собираюсь. Кому надо, тот проверит.


Ketmar   (2006-11-04 19:10:00) [19]

>[139] MeF Dei Corvi(c) 4-Nov-2006, 16:10
>Если есть желающие потестить, могу им предложить написать
>тесты ;)
ты, однако, сам напиши. и выложи. а то трындеть -- это просто. а вот как до обоснований доходит -- сразу проблемы начинаются.


MeF Dei Corvi   (2006-11-04 16:10:00) [20]


> Есть.. Чисто из банального интереса.

Если есть желающие потестить, могу им предложить написать тесты ;)


Страницы:   1 2 3 4 5 6 7 8

Наверх

Титульная страница Поиск, карта сайта Написать письмо