|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
7.2.2010, 14:09 | #1 |
V.I.P. Programiranje
|
Uporedni test brzine - C++ vs C#
Baš sam se naslušao i načitao likova koji tvrde da je razlika u brzini između C++-a (native) i C#-a (.NET) zanemarljiva, pa sam hteo da to i proverim. Pošto sam se baš baktao sa Weighted powerup sistemom, odlučio sam da odradim test za baš taj algoritam. Izolovao sam taj deo igre (C++) u poseban projekat i 300.000 ponovio to izračunavanje. Koristio sam merenje vremena precizno u mikrosekundu. Test sam uradio 10 puta uzastopce.
Evo su rezultati C++-a: Kod:
Test #1 0.00562588 Test #2 0.00558095 Test #3 0.00559608 Test #4 0.00558948 Test #5 0.00555178 Test #6 0.00559757 Test #7 0.00556259 Test #8 0.00566848 Test #9 0.00559158 Test #10 0.00555826 Onda sam sve to probao da odradim u C#. Skinuo sam ga, sklepao haotičan kod na brzinu (nikad ranije nisam radio u njemu) koji najbliže radi ono što radi i C++ kod. Samo sam izmenio random number generator (morao sam da koristim onu klasu), ostalo je sve isto. 300.000 ponavljanja, 10 puta uzastopce. Rezultati su: Kod:
Test #1 1.171 Test #2 1.156 Test #3 1.156 Test #4 1.156 Test #5 1.156 Test #6 1.140 Test #7 1.140 Test #8 1.156 Test #9 1.156 Test #10 1.156 Ne treba biti Ajnštajn da bi se izračunalo da je C++ oko 200 puta brži od C#-a u ovom slučaju. Nisam mogao da verujem brojkama pa sam sve ponovo proverio. Nema greške. Isti algoritam, isti broj ponavljanja. C++ je 200x brži. Prilažem i .rar fajl sa oba projekta, mogao bi neki poznavalac C# da proveri kakav je C# kôd pošto sam ovo, kao što rekoh, sklepao po intuiciji i sličnosti sa C++om. Download .rar fajla odavde. Čisto sumnjam da nema neke greške, pošto se i meni čini neverovatno da je razlika između C++-a i C#-a ovolika. Sigurno sam negde pogrešio Kompajlovane verzije su sve Debug, tako da ćete verovatno morati da rekompajlujete sve na vašem kompjuteru. Pozdravi svim C++ i C# korisnicima. Poslednja ispravka: Geomaster (7.2.2010 u 14:22) |
7.2.2010, 14:33 | #2 | |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: Uporedni test brzine - C++ vs C#
hahaha, koji si fanboy... strasno.
tebe je povredilo sto neko ko ne zna sta prica (ocigledno) tvrdi da je zanemarljiva razlika u brzini, pa si brze bolje napravio test da dokazes da nije (posto, jelte, ti si prvi koji se setio da to testira) i onda povrh svega, ultimativna fanboy karakteristika Citat:
to sto tako agresivno branis C++ od nepostojecih napada, nije bas zdravo. inace, ovaj C# kod ti ni malo ne valja. najveca greska koju ljudi prave je koriscenje DateTime klase za merenje kolko se kod izvrsava. jako pogresno ! em nije dovoljno precizno, em samo po sebi usporava izvrsavanje. drugo, svaki put kada pozivas funkciju getpowerup kreiras novi random objekat - apsolutno pogresno, dovoljan ti je jedan jedini staticni. aj videcu cim stignem malo da sredim ovaj c# kod pa da merimo ponovo, ako te vec tolko zanima razlika (a svi znamo da ce, i kada sredim kod, biti u korist C++-a, niko normalan to ne porice) P.S. prvi rezultat na google-u za "C# time code" je ovaj kvazi nacin za merenje koji si kopirao sa sve komentarima mogao si malo bolje da pretrazis google u potrazi za kvalitetnijim resenjem |
|
7.2.2010, 14:38 | #3 |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: Uporedni test brzine - C++ vs C#
Kod:
Originalni (Geomasterov) C# Kod: Test #1 0.917 Test #2 0.905 Test #3 0.861 Test #4 0.881 Test #5 0.886 Test #6 0.930 Test #7 0.931 Test #8 0.867 Test #9 0.869 Test #10 0.869 Izmenjeni, attachovani C# kod koji radi sve identicno, ali sa NAJOSNOVNIJIM optimizacijama Test #1 0.33 Test #2 0.31 Test #3 0.31 Test #4 0.35 Test #5 0.31 Test #6 0.31 Test #7 0.44 Test #8 0.31 Test #9 0.30 Test #10 0.31 C++ kod (nisam ga ni pogledao, kamoli menjao) Test #1 0.00735585 Test #2 0.00756033 Test #3 0.00730179 Test #4 0.00727794 Test #5 0.0075632 Test #6 0.00734631 Test #7 0.00746493 Test #8 0.00779884 Test #9 0.00744967 Test #10 0.00725059 a izvrsio sam naj naj najosnovniju optmizaciju. ukinuo konstanto rekreiranje rand objekta i malo promenio liniju koja generise nasumicni broj. kada bi imao vremena sada da se zezam i eksperimentisem, verovatno bi i jos jednom prepolovio c#-ove rezultate, te bi razlika bila jos manja. e sad, ne radim ja ovo da branim C#, nego da dokazem Geomasteru da je samo uleteo u celu stvar da bi fanboyevski branio C++ (koji ja volim i koristim, ali isto tako volim i C# za neke druge primene, i od C#-a pre svega i zivim) C# je ZNACAJNO sporiji od C++-a. bio i bice. Sto ne znaci da nije dovoljno brz za gooooooomilu primena. Poslednja ispravka: irreal (7.2.2010 u 14:57) |
7.2.2010, 14:55 | #4 |
Kekule Mekule
|
Re: Uporedni test brzine - C++ vs C#
|
7.2.2010, 15:00 | #5 |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: Uporedni test brzine - C++ vs C#
aj videcu ovih dana kada budem imao malo vremena da se bas potrudim da optimizujem C# kod koliko god je ikako moguce, cisto kao zabavan projekat a sigurno cu usput i sam dosta toga nauciti.
za sada je ova mala optimizacija vise nego dovoljna da dokazem poentu - svako ko ima pare moze da kupi najskuplje i najkvalitetnije boje ali ne moze svako da bude vrhunski slikar. C# ili C++ ? mnogo manje bitno od toga kako razmisljate, koliko se trudite i koliko dobro poznajete tematiku. |
7.2.2010, 15:00 | #6 | |
V.I.P. Programiranje
|
Re: Uporedni test brzine - C++ vs C#
Citat:
I, da, @irreal, da li to pokazuje da je C# otprilike toliko sporiji i kada je u pitanju iscrtavanje u nekoj igri? Nikada nisam bio neki hater, ne mrzim C# nego jednostavno me nerviraju početnici koji se odmah "zalepe" za C# samo zbog IntelliSense-a i JIT-a, i ne planiraju da migriraju na neki drugi, pa ga onda brane kako ima mnogo olakšica iz .NET frameworka, kako nije mnogo sporiji itd. Naravno Boost za C++ mu dođe nešto slično kao .NET biblioteke za C#. Poslednja ispravka: Geomaster (7.2.2010 u 15:07) |
|
7.2.2010, 15:05 | #7 |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: Uporedni test brzine - C++ vs C#
sa krajnje jednostavnim izmenama.
al to nije poenta, poenta je da je mnogo ljudi do sada mnogo puta merilo razliku i da je sve ovo manje vise besmisleno. (osim sto mi je, eto, dalo zabavan projekat kada budem uhvatio malo slobodnog vremena da se zezam) -edit- sad primetih da se C++ projekat zove "cppwins", vec sam spomenuo da se c# projekat zove "csharpsucks" pa jel ti stvarno ocekujes da neko tvoja "istrazivanja" i "merenja" uzme ozbiljno? mislim da nema nikoga kome nije jasno sta se ovde desava. znas na koga si me podsetio ? na zvezdase i partizanovce kada se svadjaju ! svako nadje svoju neku racunicu po kojoj je njegov tim "ocigledno bolji" neki biraju odredjene sportove, neki po volji dodaju i oduzimaju zenske sportove, neki racunaju samo ove ili one titule - kako god da okrenes, svako ce doci do rezultata koji ide njemu u korist. |
7.2.2010, 15:17 | #8 |
V.I.P. Programiranje
|
Re: Uporedni test brzine - C++ vs C#
Pa čekaj, jel ime projekta baš toliko bitno? Kôd je kôd, nema veze sa imenom projekta.
Merenje sam uradio BAŠ zato što je neko na Gamedev.net pitao za razliku u brzini i da li ima nekoga sa konkretnim brojkama i nikog nije bilo. |
7.2.2010, 15:18 | #9 | |
Član
|
Re: Uporedni test brzine - C++ vs C#
Citat:
Nema ovo bas puno veze s temom ali sta je to weighted powerup sistem? |
|
7.2.2010, 15:18 | #10 |
Kekule Mekule
|
Re: Uporedni test brzine - C++ vs C#
|
7.2.2010, 15:19 | #11 |
V.I.P. Programiranje
|
Re: Uporedni test brzine - C++ vs C#
|
7.2.2010, 15:26 | #12 |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: Uporedni test brzine - C++ vs C#
ime je veoma bitno, ali ne za brzinu koda nego za shvatanje tebe ozbiljno - sto niko ne moze da uradi.
a definicija fanboy-a je da ga nervira sto drugi ne misle isto kao i on. normalni ljudi izaberu jezik koji im najvise odgovara i lezi i koriste ga. a da ti izaberes jezik koji ti najvise lezi, a onda te "nerviraju" svi koji su izabrali neki drugi i jednostavno ne zele da koriste "tvoj". to je fanboyizam. sto tebe nervira sto neko drugi misli da je C# isto brz ko i C++. ako ga zanima da objektivno pogleda, ima vise nego dovoljno informacija po internetu da je C++ brzi, cim to nije sam ustanovio, valjda ga i ne zanima toliko ,a ti si sada uzeo na sebe da im pokazes put, da im prosvetlis zivote... |
7.2.2010, 15:32 | #13 |
Deo inventara foruma
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.111
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
|
Re: Uporedni test brzine - C++ vs C#
Sasvim ocekivani odgovori
Irreal je bar priznao da je C# sporiji, covek zna... Ali verujem da i dalje ima likova (prepoznace se) koji ce tvrditi da je razlika u brzini zanemarljiva... Meni kao (skoro pa) laiku, i tih ~42x koji se uz dodatno optimizovanje (verovatno) ne mogu dovesti ispod ~20x izgleda kao velika brojka, sto moze da bude problem kod neke kalkulacije, jer ako, na primer, C++ program vrsi proracun za 1 sekundu, onda ce C# program isto to raditi za 20+ sekundi? Naravno govorim o specificnim operacijama do koje brzina C++ moze doci do izrazaja kao sto je ovde dosla. No, ja i dalje nisam dovoljno iskusan i strucan da se upustam u ovu raspravu, pa bolje da prikocim pre nego sto raspalite i po meni @irreal, pa ima covek pravo da kaze sta misli (a i vidi). Naravno, ovde je 1000x pisano o tome da svako treba da koristi jezik koji mu odgovara. Ukoliko nekada budem mogao sebe da nazovem programerom, sigurno necu koristiti C++ za razvoj klasicnih Windows GUI aplikacija, a isto tako sigurno necu koristiti C# za program koji vrsi neke komplikovane (citaj: dugotrajne) operacije, ili za neku igru... |
7.2.2010, 15:39 | #14 | |
V.I.P. Programiranje
|
Re: Uporedni test brzine - C++ vs C#
Citat:
Drgui deo - zašto? ok za operacije, to možda i može, ali šta fali C#-u kao programskom jeziku za igre? jeste da je sporiji, ali nije uopšte toliko spor koliko tebi možda izgleda . Čekaj, jel to nešto indirektno meni upućeno da ja nisam normalan ili šta? Mislim da preteruješ. Mogu i ja svašta o tebi da kažem ali neću... |
|
7.2.2010, 15:42 | #15 | |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: Uporedni test brzine - C++ vs C#
Citat:
samim time ne moze razlika da bude tako linearna. najbolje merilo ti je realni svet. a u realnom svetu ja sam pravio razne, prilicno zahtevne aplikacije, koje su radile i sa grafikom, i sa bazama, i sa cistim matematickim proracunima. i niti jednom do sada nisam dosao u situaciju da nesto sto hocu da napravim suvise sporo radi u C#-u, pa moram da predjem na C++. dakle, pitanje je da li ces ikada praviti neku aplikaciju koja jednostavno ne moze da se napravi u C#-u i da radi pristojno. da, uvek ce raditi znatno brze u C++-u, uvek. ali, uporedi kolko ti vremena treba da napises kod u C++-u, da debugujes, da istrazis kako se radi to sto pokusavas, pa uporedi kolko to traje u C#-u. vremenom steknes dovoljno iskustva da "osetis" unapred za projekat koji moras da uradis da li ti se isplati da krenes sa C++ ili ne. a ako sedis kuci i programiras iz zabave, ili polagano radis na necemu sto ti nije hitno, nego onako, usput. onda ti je svejedno, ako vec znas c++ - samo napred, pici u njemu. |
|
7.2.2010, 15:43 | #16 |
Deo inventara foruma
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.111
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
|
Re: Uporedni test brzine - C++ vs C#
Prvo, .Net kod C# mnogo olaksava stvar kada su u pitanju "klasicne" Windows aplikacije, ne mislim samo na GUI vec i na ugradjene f-je i slicno.
Drugo, nije C# toliko spor ali je ipak sporiji, 5-10+ FPS nekad moze da znaci ^^Sve to sto si ti rekao, rekao sam i ja (citaj malo pazljivije) i mislim isto to. Dakle slazemo se i nemoj da demantujes to |
7.2.2010, 15:49 | #17 | |
V.I.P. Programiranje
|
Re: Uporedni test brzine - C++ vs C#
Citat:
Za GUI, možda olakšava rad Windows Forms, ali za C# nikako nisam našao rešenje za dockable panes dok za C++ wxAUI radi like a charm! |
|
7.2.2010, 15:55 | #18 |
Deo inventara foruma
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.111
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
|
Re: Uporedni test brzine - C++ vs C#
Da, ali ja i dalje to gledam ovako: te funkcije su vec tu, sve je tu, ti samo instaliras i kodiras-funkcije and ostalo su pisali profesionalci i ne moras da se brines sta ce i kako raditi, postoji tona tutoriala i korisnika... Ne znam meni C# deluje kao Visual Basic 6 danasnjice
|
7.2.2010, 15:57 | #19 |
Kekule Mekule
|
Re: Uporedni test brzine - C++ vs C#
Evo osnovnog render demoa poredjenog u C++ i C#:
Spoiler za C++:
Spoiler za C#:
Da ne bude zabune oko brojeva trouglova - korisceni su isti meshevi za test (samo drugi mat jer nisam mogao da menjam onaj u ogre demou), brojac u ogreu verovatno mnozi trouglove sa svetlima ili nesto (ili je pokvaren ). Sa GUI-em C++ je brzi, ali to nije znacajno na ovim FPS-ovima a i ta razlika je manja na nizim FPS-ovima. Da jeste sporiji ali ne toliko da bih zeleo da se vratim na C++. |
7.2.2010, 17:08 | #20 | |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: Uporedni test brzine - C++ vs C#
Citat:
http://www.codeguru.com/csharp/cshar...le.php/c12875/ |
|
Bookmarks sajtovi |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
WD6401AALS mozda crkava | player1 | Kvarovi | 5 | 11.3.2010 16:56 |
Novo povećanje brzine ADSL-a, januar 2009. | donator99 | Internet usluge | 190 | 4.1.2009 14:09 |
CPU gaming test | starx | Osnovne komponente | 4 | 20.10.2008 22:31 |
Brzine USB Flash diskova | Dusan_BG | Nosači podataka | 4 | 10.1.2008 18:02 |