![dev.gamez.lv Forum Index](templates/subSilver/images/logo_phpBB.gif) |
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
snake5 Indago dalībnieks
![Indago dalībnieks Indago dalībnieks](https://forums.gamedev.lv/images/ranks/cup2.gif)
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Dec 26, 2007 2:00 pm Post subject: |
|
oj, oj...
ir jau ātrāk, bet...
ar tavu paņēmienu particle sistēma nesanāks!
Quote: | Es jau arī varētu salīdzināt velosipdēda un motocikla pārvietošanās ilgumu no Jelgavas līdz Rīgai un pēc tam brīnities! |
tātad, tu jau tā dari, kā pats gribēji! ^^
particle sistēmai vajag izņemt no jebkuras vietas objektu!
drīz nāks vaļā jaunais tests - reāla particle sistēma ar std::vector un manu konteineri!
cīņa vēl nav beigusies! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
bubu Indago Uzvarētājs
![Indago Uzvarētājs Indago Uzvarētājs](https://forums.gamedev.lv/images/ranks/cup1.gif)
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Dec 26, 2007 2:03 pm Post subject: |
|
snake5 wrote: | particle sistēmai vajag izņemt no jebkuras vietas objektu! |
Tava sistēma arī to nemāk. Vismaz testa projektā. Un es to tavu vektoru pārrakstīju balstoties tikai uz to, ko māk tava sistēma. Kā man zināt kādos perversos veidos tev to sistēmu vajadzēs izmantot. Topika sākumā minētā informācija arī ir nepilnīga, lai no tās kautko izzīstu.
Kad reiz tu sapratīsi, ka std::vector un pliks masīvs C++'ā ir ekvivalentas lietas ātrdarbībā? Apskati jebkura vektora implementāciju - tur tu redzēsi ļoti plānu wraperi ap prastu dinamisku masīvu. Un ar ieslēgtām optimizācijām lielo vairumu funkciju C++ komilētājs nooptimizēs nost. Ir man darbā viens kolēģis vārdā I. Viņs no manis padzirdot, ka vektors nu nekādīgi nav lēnāks par masīvu, bija ļoti pārsteigts un negribēja ticēt tam. Beigu beigās šis uzrakstīja nelielu testu, kurš meklēja un rēķināja permutācijas masīvā, salīdzinot masīva un vekora izmantošanas ātrdarbību. Un uz palieliem testa datiem ieguva, ka vektors ir ap 3% ātrāks! (laikam bija 3, precīzu skaitli neaceros, varbūt bija 5) Gan jau tā ir mērījumu kļūda, bet as nu 100 punkti nozīmē, ka vektors NAV lēnāks kā masīvs. Un tu tur patreiz salīdzini masīvu ar vektoru. Dinamisks masīvs ir tikai un vienīgi neērtāks un nedrošāks par vektoru. Kā arī tajā jāizgudro divritenis bieži lietotām operācijām, taču vektoram jau daudzkas ir gatavs. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Tenjou
![](http://img40.imageshack.us/img40/1708/painhf.jpg)
Joined: 22 Nov 2005 Posts: 275
|
Posted: Wed Dec 26, 2007 2:13 pm Post subject: |
|
Un kā būtu ar ātrumiem, ja particle sistemai lietotu std::list vai boost::ptr_list? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
bubu Indago Uzvarētājs
![Indago Uzvarētājs Indago Uzvarētājs](https://forums.gamedev.lv/images/ranks/cup1.gif)
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Dec 26, 2007 2:21 pm Post subject: |
|
std::list būs lēns - jo tas uz katra elementa pievienošanu izdalīs atmiņu (pie tam maza izmēra, kas visai negatīvi atsaucas uz atmiņas fragmentāciju), un uz katra elementa izņemšanu atbrīvos atmiņu. Un darbības ar atmiņu ir lēnas. Lai to paātrinātu nāksies izmantot kādu memory pool sistēmu. Taču, lai saprastu kas tā tāda ir un kā to efektīvi izmantot, snjakem vēl tālu.
boost::ptr_list ir vispār kautkas kosmisks. Ja jau snjake neatzīst std::, tad kur nu vēl boost::. Tagad paskatījus uz to ptr_list un neredzu nekādas priekšrocības pār std::list ātrdarbība ziņā. Vienīgā atšķirība - ptr_list pārņem owneršipu pār pointeri, tb ņemot objektu ārā no konteinera tas tiks vienmēr atbrīvots (izsaukts destruktors un atbrīvota atmiņa). Savā ziņā lēta smart_ptr alternatīva. Varētu būt izdevīgi lietot tādās vietās, kur std::list'ā ir jaglabāti boost::shared_ptr. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
snake5 Indago dalībnieks
![Indago dalībnieks Indago dalībnieks](https://forums.gamedev.lv/images/ranks/cup2.gif)
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Dec 26, 2007 2:34 pm Post subject: |
|
Quote: | Taču, lai saprastu kas tā tāda ir un kā to efektīvi izmantot, snjakem vēl tālu. | Nav gan! it īpaši, ja es zinu, ka tā ir vienkārša linked list'a struktūra
biju tādu mēģinājis ielikt par particle sistēmu!
jaunā testa versija, mainiet droši sourci, tagad vismaz zināsiet, kādām vajadzībām konteineri tiek izmantoti!
te ir:
http://yy.lv/download.php?f=91601
gaidu prettriecienu!
![Cool](images/smiles/icon_cool.gif) _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
bubu Indago Uzvarētājs
![Indago Uzvarētājs Indago Uzvarētājs](https://forums.gamedev.lv/images/ranks/cup1.gif)
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Dec 26, 2007 2:38 pm Post subject: |
|
snake5 wrote: | Nav gan! it īpaši, ja es zinu, ka tā ir vienkārša linked list'a struktūra |
Tai pēc būtības ir visai tālu no vienkāršas linked list struktūras. Es šeit nedomāju implementāciju. Es domāju tās būtības saprašanu un izmantošanas īpatnības.
Joprojām tu negodīgi salīdzini. vektors tavā kodā māk glabāt daudz vairāk elementus nekā sākumā norādītos 10000. Taču masīvs - tikai 10000. Pārveidojot teavu vektoru sistēmu, lai tas arī ņem vērā faktu, ka nevajadzēs glabāt vairāk kā sākumā norādītos init_cnt, un lūdzu rezultāts:
Code: | Adding 9000 objects - my system
Result: 1778
Adding 9000 objects - vector system
Result: 1547
Getting object count (9000 objects) - my system
Result: 8
Getting object count (9000 objects) - vector system
Result: 8
Object advance event (9000 objects) - my system
Result: 4631
Object advance event (9000 objects) - vector system
Result: 3402
Removing all objects - my system
Result: 313
Removing all objects - vector system
Result: 8 |
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
snake5 Indago dalībnieks
![Indago dalībnieks Indago dalībnieks](https://forums.gamedev.lv/images/ranks/cup2.gif)
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Dec 26, 2007 5:16 pm Post subject: |
|
parādi pārveidojumu sourci, lai es pieliktu atjaunojumus savā un strādātu tālāk! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
bubu Indago Uzvarētājs
![Indago Uzvarētājs Indago Uzvarētājs](https://forums.gamedev.lv/images/ranks/cup1.gif)
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Dec 26, 2007 5:28 pm Post subject: |
|
Nav vairs sources, izmetu ārā. Vienīgais, ko pamainīju ir uzliku ar resize sākumā tādu izmēru kā vajag (tāpat kā tavam masīvām) un to tavu Step funkciju pārrakstīju ar vienu ciklu divu vietā. Objekta pievienošanu paņēmu tieši tādu pašu kā iepriekš manā iepostētājā koda piemērā.
Netaisos te sēdēt un rakstīt tavu kodu visu laiku tev priekšā. Ja tu prasi padomu par to, ko izmanto saviem dinamiskajiem masīviem, tad tev jau n-reizes esmu atbildējis - std::vector. Un tad, kad sāksi optimizē programmu (beigās), tad lieto profilerē (mēri, kura daļa ir visilgākā) kodu un optimizē bottlenekus. Ļoti šaubos vai primitīvs masīvs tavā programmā būs bottleneks.
Last edited by bubu on Wed Dec 26, 2007 5:46 pm; edited 1 time in total |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
snake5 Indago dalībnieks
![Indago dalībnieks Indago dalībnieks](https://forums.gamedev.lv/images/ranks/cup2.gif)
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Dec 26, 2007 5:32 pm Post subject: |
|
nu ok!
vispār - visa šitā pasāciena mērķis godīgi sakot bija izveidot lielisku particle sistēmas konteineri, nenormāli ātru, lai es būtu 1000% drošs, ka tā manā kodā problēmas nerada! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
|
|
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
|