Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Mantharis
Založen: 28. 07. 2007 Příspěvky: 39
|
Zaslal: 22. duben 2009, 11:46:45 Předmět: Pouzivat STL kontejnery ci psat vlastni datove struktury |
|
|
Zdravim, chtel bych se zeptat na vasi zkusenost s STL kontejnery v aplikacich kde je rychlost programu prioritou (napriklad treba ty hry ktery se tu docela resej).
Obecne pouzivat nebo si radsi psat vlastni podmnoziny napriklad vectoru a listu?
Mam pocit ze je furt dost lidi ktery to zaryte ignorujou stim ze "do toho nevidej" a tak si radsi pisou vlastni podmnoziny techto kontejneru...tak by me zajimala vase zkusenost  |
|
Návrat nahoru |
|
 |
Mem

Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 22. duben 2009, 11:48:07 Předmět: |
|
|
Já jsem používal v STL třeba <list> běžně (třeba tady http://nepsin.com/bs/) a neměl jsem nějaký problém s výkonem _________________
 |
|
Návrat nahoru |
|
 |
yaqwsx
Založen: 25. 02. 2008 Příspěvky: 66
|
Zaslal: 22. duben 2009, 12:37:52 Předmět: |
|
|
STL je velice dobře napsaná a velice rychlá. Je však utno dobře vybíat struktury - ne na všecho se hodí vector... |
|
Návrat nahoru |
|
 |
OndraSej

Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 22. duben 2009, 12:55:52 Předmět: |
|
|
STL je celkem rychle, uspesne jsem to pouzival i v ruznych pocitacich programech. Spis nez na psani vlastnich struktur je potreba si dat pozor na to, kdy se treba pri predavani parametru obsah kontejneru kopiruje a kdy ne (aneb predavej reference vsude, kde to jde).
Ale jinak si myslim, ze pokud svoji hru potrebujes optimalizovat zrychlovanim kontejnerovych operaci, tak mas mnohem vetsi problem nekde jinde. _________________ http://trionteam.net |
|
Návrat nahoru |
|
 |
MD

Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 22. duben 2009, 13:04:33 Předmět: |
|
|
Doporucuju se naucit a pouzivat.
1) Rychlejsi vyvoj a nadelate tam mene chyb, nez kdyz si kazdy programator kazdou silenou strukturu nabastli sam.
2) Bude to rychlejsi - asi proto, ze kontejnery jako set, map, hash_map se jednoduse pouzivaji, takze programatori radostne naimplementuji algoritmy s nizkou asymptotickou slozitosi. Naproti tomu, kdyz si vse musite psat sami, budete lini, skoncite u int*, pouzijete linearni prochazeni a pod. -> a slozitost je razem nekde uplne jinde.
Pak je tu obava, ze clovek nad tim nema uplnou kontrolu a nevi co se deje uvnitr a boji se, zda to neni pomale. Nebojte se, pripadne zpomaleni je NAPROSTO nepodstatne. Pokud se bojite skryte vyvolavanych copyconstructoru, zkuste objekty predavat referenci.
Jestlize je hra nekde pomala, bude tam jedno kriticke misto (bottle neck), tohle chce najit a zoptimalizovat, vsude jinde muzete bez obav pouzivat stl. A ani na tom kritickem miste to pravdepodobne nebude zpomalene diky stl. _________________ - play with objects - www.krkal.org - |
|
Návrat nahoru |
|
 |
Mantharis
Založen: 28. 07. 2007 Příspěvky: 39
|
Zaslal: 22. duben 2009, 13:39:45 Předmět: |
|
|
No a pri uziti toho STL...da se to nejak rozumne profilovat?
...s profilerem sem teda zacal kvuli problemum s vykonem pracovat teprve nadavno tak mozna ho jen blbe pouzivam (pouzivam ten co je ve VS 2008)
U toho STL mi pri profilovani celkem vadi ze nekdy profiler vypise nejakou hluboce zanorenou metodu ktera treba stoji podezrele hodne vykonu a jen s velkym usilim se clovek dopidi k nejakejm "vyssim metodam" ktery tuto metodu volaji aby si na ne clovek dal pozor a omezil jejich pouzivani. |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 22. duben 2009, 13:43:37 Předmět: |
|
|
Ak sa s tym len tak z nudy hras doma, a bavi ta to, tak preco nie, len take zverstva nerob v praci.
Pokial mas problem s vykonom ohladom kontajneru, tak si na 99.5% spravil na zaciatku chybny vyber druhu kontajneru.
Nenapises to rychlejsie.
Navyse, naco by si to robil ? Pises si pre vlastnu potrebu C++ kompilator ?
STL JE sucast C++,treba si len zvyknut a trocha o tom precitat, kedy je vhodne ktory pouzit (vzhladom na pam.a vyk.narocnost pri copy/realloc), tot vsjo... |
|
Návrat nahoru |
|
 |
Tringi

Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 22. duben 2009, 16:09:52 Předmět: |
|
|
Nemůžeš-li se rozhodnout Použij STL
Myslíš-li si že STL bude pomalé Použij STL
Je-li program s STL pomalý Použij jiný kontejner, jiný algoritmus, ...
Padá-li to s STL Použij STL správně
Máš-li správný kontejner, správné algoritmy a stále je to pomalé, pak máš úzké hrdlo jinde ...a nebo řešíš příliš náročný problém pro daný hardware.
Nitpickers corner:
STL není součást C++, STL je/byla knihovna od SGI, jejíž část byla přijata do standardu (a to ještě v pozměněné formě). V celém standardu se nikde zkratka STL nevyskytuje, zmíněné kontejnery a algoritmy jsou společně funkcemi a makry přejatými z C a s dalšími součástí jedné velké C++ Standard Library  _________________ WWW | GitHub | TW |
|
Návrat nahoru |
|
 |
ladik-BigBoss

Založen: 28. 07. 2007 Příspěvky: 162
|
Zaslal: 23. duben 2009, 02:22:11 Předmět: |
|
|
použij STL, pokud ti nejde vyloženě o věci jako pole vertexů, které jdou rovnou na GPU přes 3D API. tam je zbytečné to uchovávat v STL kontejneru, jenom přesunuješ paměť |
|
Návrat nahoru |
|
 |
Yossarian

Založen: 28. 07. 2007 Příspěvky: 274 Bydliště: Šalingrad
|
Zaslal: 23. duben 2009, 08:49:54 Předmět: |
|
|
Ja pouzivam STL, s jednou vyjimkou - string, ten jsem si napsal vlastni, kvuli potrebe copy-on-write. |
|
Návrat nahoru |
|
 |
|