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

mans statiskais konteineris, tā īstais nosaukums
Goto page Previous  1, 2
 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
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: 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
View user's profile Send e-mail
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: 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
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
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: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
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: 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
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Goto page Previous  1, 2
Page 2 of 2

 
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