dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Ātrums

 
dev.gamez.lv Forum Index -> Pļāpātuve
View previous topic :: View next topic  

Uzvarēs...
C++
50%
 50%  [ 8 ]
C
6%
 6%  [ 1 ]
ASM
43%
 43%  [ 7 ]
TurboPascal
0%
 0%  [ 0 ]
Fortran
0%
 0%  [ 0 ]
Total Votes : 16

Author Message
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Thu Aug 05, 2004 1:16 pm    Post subject: Ātrums

Visi, kas jel kad izstrādājuši grafisku spēli noteikti ir saskārušies ar tādu lietu kā ātrums - cik tad FPS mums ir auģšējā kreisajā stūrītī.. :) Parasti gribās vairāk un - jo vairāk jo labāk. Augsts FPS - patīkama apziņa, prieks utt..

Bet, kas nosaka FPS? Tas ir ļoti atkarīgs no daudziem parametriem - sākot ar tādām triviālām lietām kā datora konfigurācija un beidzot ar 2D vai 3D. Un to visu pamatā gameDEVeloperis var pats mēģināt mainīt, modificēt utt, rakstīt labāku kodu, ierakties dziļāk mašīnkodā, aizskarot dzelžus arvien precīzāk...bet ir viens parametrs, kas ietekmē ātrumu, bet nav tik viegli modificējams. Tas ir kompilētas programmas ātrums - tb - nokompilēta koda ātrums.

Domāju, ka visi ir dzirdējuši par to, cik C/C++ ir ātrs..bet, kas ir C/C++? Tas ir tikai valodas standarts..prasti runājot un vienkāršojot sintakse - jā ar C++ var daudzas lietas uzrakstīt īsāk, loģiskāk un tāmdēļ arī ātrāk. Piemēram, vienkāršs cikls pascālā:
Code:

var i: Integer;
for i:=0 to count do
 ....

un C/C++/Java:
Code:

for (int i=0;i<count;i++) {...};

Bet ne jau tikai tur tas āķis - daudz ko izsaka arī kompilātors, kas txt pārvērš mašīnkodā..

Tātad, par ko es šeit? Es gribu aicināt visus gameDEVus uz nelielu eksperiementu, kas mums visiem IMHO būtu ļoti noderīgs - uztaisīsim programmēšanas valodu sacīkstes!

Kāpēc? Protams, līderi, pat uzvarētāji droši vien ir skaidri, taču tieši cik reizes ASM ir ātrāks par C++ un vai C++ un C ir vienlīdz ātri un cik tad īsti lēns ir VisualBasic/QBasic - to vismaz es labprāt noskaidrotu gana precīzi. Bez tam bieži ir situācijas, kad rodas strīdi coderu starpā par to, kas tad ir ātrāks - beisiks vai paskāls. Daži saka, ka ātrumu nosaka roku līkums un Basic var skriet tikpat ātri cik C++. Citi smejas un uzstāj, ka C++ ir ātrums, bet VB = bremze un tur var izstiepties. Varbūt derētu tā kā beidzot noskaidrot - kā īsti tur ir? Tad arī developējot spēli būs skaidrs kādi plusi un mīnusi būs izmantojot konkrēto valodu.

Nu tāds ir mans priekšlikums tīri idejiskā līmenī. Praktiski es to domāju realizēt tā - jāizveido gana vienkāršs un universāls metakods, kas pietiekami noslogos sistēmu, lai varētu novērtēt tā izpildes laiku milisekundēs vismaz ar kārtu 10 vai 100. Šim mērķim parasti noder cikli ar kaut kādu universālu matemātisko rēķinu. Jāvienojas par datu tipiem/izmēriem, lai visās valodās kods būtu pēc iespējas līdzīgāks. Tad tas jāuztaisa un jānotestē. Lai izpaliktu subjektīvie apstākļi, testēts tiktu uz 3-5 brīvprātīgo datoriem un rezultāti iegūti neatkarīgi. Tad izveidosim smukus grafikus un nopublicēsim šeit. Noteikti būs jāņem vērā kompilātori - tam pašam C++ ir daudzi un visus populārākos būtu jāapskata atsevišķi, jo, es domāju, tas daudzus interesē - vai ir reāla atšķirība ātrumā starp vienas valodas dažādi kompilētām exēm.

Es pieņemu, ka kaut kas tāds noteikti jau ir darīts un pat profesionālāk, taču, hei, labāk jau pašam pārliecināties pēc saviem noteikumiem, nekā ticēt svešiem apgalvojumiem? Bez tam, tas ir Latvijas gameDEV, so we need local solutions :). Nu, ta kā būs?

BTW, es ceru ieraudzīt vismaz:[b]
C, C++ [VisualC++, free compileris no M$, BorlandC++, mingw (pareizi:)?)], Java, VisualBasic [versijas], Delphi [versijas], TurboPascal[versijas], QBasic, ASM, Fortran.
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Thu Aug 05, 2004 1:28 pm    Post subject:

Nu pameeginaat jau vareetu, tikai kaadu koda gabalu ta mees visi rakstiisim?
_________________
Back to top
View user's profile Send e-mail
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Thu Aug 05, 2004 1:44 pm    Post subject:

Nu..mans piedaavaajums buutu 2kaarshu ciklu ar robežu kaut kur pie mainīgo reindža (integer vai unsigned), kur katrā iterācijā izpilda trīs aritmētiskās darbības +, *, /.

Vai arī, varētu piemēram rēķināt milzīgas matricas ar tiešajām metodēm, man kāreiz ir kaut kāds kods, kas rēķina ar parasto Gauseni, plus, man ir arī saderīgo matricu ģenerātors milzīgām random matricām (testēju dažādu tiešo metožu ātrdarbīgumu pie lieliem rangiem).

Te ir kods ilustrācijai. Rēķināšanas daļa (uz ko te arī vispār jāskatās), manuprāt, ir puslīdz identiski implementējama visās nosauktajās valodās...jeb nē?
Code:

procedure TLAVS_ris.LAVS1( input, output: String );
{Gausene}
var
  fails, izvads : TextFile;
  A : array of array of real;
  f,X : array of real;
  N,i,j,k : integer;
  laiks0: DWord;
begin
  AssignFile(fails, input);
  Reset(fails);
  Readln(fails,N);
  SetLength( A, N, N );
  SetLength( f, N );
  SetLength( X, N );
  for i:=0 to N-1 do
  begin
    for j:=0 to N-1 do
      Read(fails,A[i,j]);
    ReadLn(fails,f[i]);
  end;
  CloseFile(fails);

  laiks0:= GetTickCOunt;

  pb1.Max:= N;

  for i:=0 to N-1 do
  begin
    for j:=i+1 to N-1 do
      a[i,j]:=a[i,j]/a[i,i];
    f[i]:=f[i]/a[i,i];
    a[i,i]:=1.0;
    for k:=i+1 to N-1 do
    begin
      for j:=i+1 to N-1 do
          a[k,j]:=a[k,j]-a[i,j]*a[k,i];
      f[k]:=f[k]-f[i]*a[k,i];
      a[k,i]:=0.0;
    end;

    pb1.StepIt;
  end;

  pb1.Position:= 0;

  for i:=N-1 downto 0 do
  begin
    X[i]:=f[i];
    for j:=i+1 to N do
        X[i]:=X[i]-a[i,j]*X[j];

    pb1.StepIt;
  end;

  pb1.Position:= 0;

  AssignFile(izvads, output);
  Rewrite( izvads );
  for i:=0 to N-1 do
      writeln(izvads, 'X[',i,']=',X[i]:0:6);

  writeln( izvads, 'metode: Gausa' );
  writeln( izvads, 'LAVS rangs: ', N );
  writeln( izvads, 'apreekinu laiks (ms): ', GetTickCount - laiks0 );
  CloseFile( izvads );
end;

_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Thu Aug 05, 2004 1:45 pm    Post subject:

No otras puses varbūt vajadzētu kādu mākslīgu kodu tomēr, jo galvenais, lai nesanāk, ka kāds uzraksta efektīvāk izmantojot valodas iespējas. Doma ir par identisku kodu...
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Thu Aug 05, 2004 2:01 pm    Post subject:

Quote:

ka kāds uzraksta efektīvāk izmantojot valodas iespējas. Doma ir par identisku kodu...


Tad taas gluzi nevar nosaukt par "valodu" sacensiibaam. Tad tas vairaaku buutu - "kursh kompilators labaak paarveido parastas aritmeetiskas darbiibas mashiinkodaa un piemet klaat mazaak nevajadziigas komandas" sacensiibas. Ja mees gribam "valodu" sacensiibas, tad driizaak vajag konkreetu uzdevumu, kuru katrs implementee savaa valodaa peec iespeejas efektiivaak, izmantojot visas iespeejas. Bet tas noziimeetu, ka katram ir perfekti jaapaarvalda sava valoda liidz peedeejam siikumam, ar ko te laikam reti kursh var palieliities (nu es vismaz 100% nevaru), kas atkal liek saprast, ka shiis sacensiibas buutu bezjeedziigas, jo mees pie nekaada 100% pareiza leemuma nenonaaktu. Turklaat aatrdarbiiba nebuut nav vieniigais peec kaa var noteikt valodas "labumu". Kad peedeejoreiz paarbaudiiju, nav nevienas vismaz Quake apmeeru speeles tiiraa ASM valodaa rakstiitas Smile Jaanjem veeraa daudzas citas lietas. Nu taads mans spriedums...
_________________
Back to top
View user's profile Send e-mail
fest



Joined: 07 Apr 2003
Posts: 187
Location: Madona

PostPosted: Thu Aug 05, 2004 2:17 pm    Post subject:

manas liikaas rokas
neieraudziiju asm un nobalsoju par C++
_________________
Signature for rent. Good as new.
4 lines max. 80 letters.
Ls 0,02/post
Back to top
View user's profile Send e-mail
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Thu Aug 05, 2004 2:31 pm    Post subject:

Nu tad jau iznāks,ka VisualBasicā veikls rakstītājs var uztaisīt ātrāku kodu kā C++. Un? Taas nav valodu, bet koderu sacensiibas atkal. Doma ir piemēram šādu kodu:
Code:

float a=3.14;
for (int i=0;i<2147483648;i++)
  for (int j=2147483648;j>0;j--)
    a = a*i/j - a;

uzrakstīt visās interesējošās valodās tieši tā kā te tikai, ievērojot specifisko sintaksi un tad nokompilēt uz dažādiem kompilātoriem.

Nav runa par to, cik efektīvu kodu var uztaisīt ar kādu no valodām, jautājums vai valoda/kompileris/interpretātors pati par sevi ir ātra? Vai VB tiešām ir lēnāks par C++ vai arī tās ir muļķības?
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Thu Aug 05, 2004 2:41 pm    Post subject:

Bet vai tad vc++ .exee neraksta visadas drazas, kaa piemeeram - regjistraacijas meeslus utt.?
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Aug 05, 2004 2:43 pm    Post subject: Re: Ātrums

Kamazs wrote:

C, C++ [VisualC++, free compileris no M$, BorlandC++, mingw (pareizi:)?)],

Nu biku nepareizi, pareizāk būtu GNU C/C++, jo mingw ir konkrēts GNU C/C++ portējums Win32 vidē. Bet ja šis viss aprobežojās ar algoritmu implementāciju, tad pilnīgi vienalga mingw vai gnu c.

Vēl arī jautājums, vai tas etalon-kods jāpārraksta tikai pielietojot (mainot) valodas sintaksi, t.b. tā lai tas doto algoritumu izpildītu tā kā etalonā, vai arī drīkst pielietot optimizācijas (piemēram - assemblerā veikt loop-unrolling). Kā nekā GNU C var opcijās norādīt, lai šis C kodu visādi ķīmiķo atrdarbības labad!

Edit: Starpcitu, kādu laiku atpakaļ uzgāju šādu lappeli: http://dada.perl.it/shootout/ Der paskatīties. It sevišķi Scorecard (kopvērtējumu) :)
Back to top
View user's profile Send e-mail
chaosman



Joined: 28 Oct 2003
Posts: 64
Location: Rīga

PostPosted: Thu Aug 05, 2004 6:15 pm    Post subject:

Kau kas liidziigs ir dariits sheit:
http://www.rsdn.ru/article/devtools/perftest.xml
http://www.rsdn.ru/article/devtools/perftest2.xml
http://www.rsdn.ru/article/devtools/perftest3.xml

variet apskatiities, ja iznaak laiks. Redzams, ka VB dazhos testos diezgan bezceriigi atpaliek (sinteetiskajos testos), bet no otras puses, reaalu uzdevumu risinaashana demonstree tiiri normalu performaci...


No valodaam veel vajadzeetu iekljaut C# ... nezinu vai Latvijaa kaads shobriid vinju izmato, bet gan jau naakotnee paraadiisies.
Back to top
View user's profile
ILMIS
Guest





PostPosted: Sat Sep 04, 2004 9:30 am    Post subject: Ātrums

Visātrākā ir programmēšanas valoda Euphoria.

Sk. http://www.rapideuphoria.com
Back to top
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Sep 04, 2004 12:52 pm    Post subject: Re: Ātrums

ILMIS wrote:
Visātrākā ir programmēšanas valoda Euphoria.

Sk. http://www.rapideuphoria.com


Nezkāpēc tad viņiem pašā pirmajā lapā ir teksts:
Boost your speed with the Euphoria To C Translator!
Back to top
View user's profile Send e-mail
dev



Joined: 27 Jul 2004
Posts: 206
Location: Latvija

PostPosted: Sun Sep 05, 2004 1:46 pm    Post subject:

man liekas diezgan negudra doma shito riikot - vismaz par C/C++, kuriem kompilatori ir gana gudri lai shaadus vienkaarshus ciklus paarveerstu tik pat aatraa mashiinkodaa kaa rakstot ASM. (jeb kura valoda +,-,*,/ nokompilees par identisku procesora instrukciju.) Jaasaka ka arii ar citaam valodaam ir liidziigi - aatruma atskjiriibas ir buutiskas citaas - sarezgjiitaakaas lietaas (oop, atminjas menedzheeshana utt), nevis vienkaarshos ciklos un aritmeetiskaas darbiibaas.

..taas ir manas domas Smile
Back to top
View user's profile Visit poster's website MSN Messenger
BHC
Guest





PostPosted: Sun Sep 05, 2004 5:16 pm    Post subject:

Tas ir bulšits, ka C/C++ ir ātrs un/vai Delphi/OPascal/Basic - lēns. Te runa iet par kompilātoru nevis sintaksi, par to, kā kompilātors organizē atmiņu, datu struktūras un optimizē mašīnkodu, sakrusto(sapāro?) instrukcijas. Jo labāk viņš to dara, jo mazāk cpu cycles aizņem kāda algoritma izpilde.

Šī saruna ir bezjēdzīga, mēs varam vienīgi salīdzināt kādu no daudzajiem C/C++ kompilātoriem ar kādu citu, bet teikt, ka, lūk, šī ir ātrāka valoda, nē.

Quote:
cik reizes ASM ir ātrāks par C++ un vai C++ un C ir vienlīdz ātri un cik tad īsti lēns ir VisualBasic/QBasic

Huh?

ASM jau ir tas pats mašīnkods, tikai nav vēl pārveidots binārā formātā - zini operāciju kodus, raksti pataisno inline hexodecimālajā bez kompilēšanas. Domāju, ka jaunie kompilātori optimizē galakodu pietiekoši labi, lai nebūtu nepieciešams rakstīt kaut ko ASM'ā, varbūt kādu ļoti intensīvu ciklu. Zināt ASM tagad vairs nav nepieciešams, šis palīdz vienīgi labāk izprast cpu un datora uzbūvi.

It īpaši tavā gadījumā, kamaz. 2d spēli vari rakstīt jebkurā valodā, par ātrumu vari neuztraukties līdzko nesāc rakstīt špageti-kodu un bilžu mālēšanu veic hardwāriski, ieteicams ar ogl uz quadiem/tri.
Back to top
Display posts from previous:   
dev.gamez.lv Forum Index -> Pļāpātuve All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group