|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Uzvarēs... |
C++ |
|
50% |
[ 8 ] |
C |
|
6% |
[ 1 ] |
ASM |
|
43% |
[ 7 ] |
TurboPascal |
|
0% |
[ 0 ] |
Fortran |
|
0% |
[ 0 ] |
|
Total Votes : 16 |
|
Author |
Message |
Kamazs Guru
Joined: 17 Jan 2003 Posts: 829 Location: The glorious ancient city of Loja
|
Posted: 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 |
|
|
GiGa Indago Uzvarētājs
Joined: 25 Sep 2003 Posts: 887
|
Posted: Thu Aug 05, 2004 1:28 pm Post subject: |
|
Nu pameeginaat jau vareetu, tikai kaadu koda gabalu ta mees visi rakstiisim? _________________
|
|
Back to top |
|
|
Kamazs Guru
Joined: 17 Jan 2003 Posts: 829 Location: The glorious ancient city of Loja
|
Posted: 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 |
|
|
Kamazs Guru
Joined: 17 Jan 2003 Posts: 829 Location: The glorious ancient city of Loja
|
Posted: 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 |
|
|
GiGa Indago Uzvarētājs
Joined: 25 Sep 2003 Posts: 887
|
Posted: 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 Jaanjem veeraa daudzas citas lietas. Nu taads mans spriedums... _________________
|
|
Back to top |
|
|
fest
Joined: 07 Apr 2003 Posts: 187 Location: Madona
|
Posted: 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 |
|
|
Kamazs Guru
Joined: 17 Jan 2003 Posts: 829 Location: The glorious ancient city of Loja
|
Posted: 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 |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
chaosman
Joined: 28 Oct 2003 Posts: 64 Location: Rīga
|
|
Back to top |
|
|
ILMIS Guest
|
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sat Sep 04, 2004 12:52 pm Post subject: Re: Ātrums |
|
Nezkāpēc tad viņiem pašā pirmajā lapā ir teksts:
Boost your speed with the Euphoria To C Translator! |
|
Back to top |
|
|
dev
Joined: 27 Jul 2004 Posts: 206 Location: Latvija
|
Posted: 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 |
|
Back to top |
|
|
BHC Guest
|
Posted: 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 |
|
|
|
|
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
|