Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Alexpi en 27 de Agosto de 2007, 10:03:46 PM

Título: usar stl
Publicado por: Alexpi en 27 de Agosto de 2007, 10:03:46 PM
He estado hablando con un amigo que usa stl, y me ha dicho que es demasiado lenta. En una practica de la uni, usandola para una simple lista tardaba un 30% mas que si hacias el tda lista sin usar la stl.

Es cierto que es tan lenta? pq un 30%... es demasiado para usarla en proyectos y.. ogre3D la usa :S
Título: usar stl
Publicado por: Warchief en 27 de Agosto de 2007, 10:41:37 PM
Depende. Usar una lista para recorrerla secuencialmente, sí, es "más" lento. Usa mejor un vector. Haz una prueba y verás.

Si además están los flags por defecto de VS2005, también se puede arañar un poco [_SECURE_SCL=0 y otros que no recuerdo; en inet hay info sobre el tema de lentitud en VS2005 debido a los flags esos].
Título: usar stl
Publicado por: AK47 en 27 de Agosto de 2007, 10:45:46 PM
Nosotros las usamos en nuestro juego y desde luego no van lentas. Por cierto que GameDev.net esta a rebosar de este tema (sale cada dos por tres), y la respuesta es siempre la misma: son lentas si las usas mal, y su rendimiento es cuando menos igual al que puedas implementar tu, sino mejor.
Título: usar stl
Publicado por: ethernet en 28 de Agosto de 2007, 12:01:06 AM
Todo el mundo dice que son lentas, pero nadie es capaz de demostrarlo con hechos. Que demuestren que son capaces de implementar todos los contenedores de la STL con los mismos bugs que STL, con la misma versatilidad de STL y con más velocidad.

Hay gente que es muy lista, hacer ese tipo de afirmaciones es muy fácil, es seguro que un contenedor hecho a medida será más rápido, pero si quieres algo general, si mides el tiempo que tardarías en implementar todos los contenedores de STL, un desarrollador sin demasiada capacidad (tiempo + dinero) opta sin pensar por STL.
Título: usar stl
Publicado por: Lex en 28 de Agosto de 2007, 12:11:53 AM
...
Título: usar stl
Publicado por: Pogacha en 28 de Agosto de 2007, 01:24:25 AM
Definitivamente las STL son mas lentas que cualquier cosa que hagas directamente (contenedores intrusivos, buckets, pools), pero vale también que esa lentitud no tiene que influir en la performance de una aplicación.
La constante de iteración generalmente no debe ser preocupante, sino la complejidad de los algoritmos. En casos donde un algoritmo ocupe mas del 50% del tiempo de CPU y se requiera bajarlo, en ese caso se pueden usar contenedores especiales, pero segun mi experiencia esto ocurre cada vez menos. Lo que requiere de baja constante se lo suele llevar a hardware y lo que requiere de mucha optimización solo lo pueden hacer compañias grandes.
Saludos!
Título: usar stl
Publicado por: senior wapo en 03 de Septiembre de 2007, 03:32:32 PM
Lo dejé para luego y al final se me olvidó decir una cosa en este hilo.

Espero que sepáis inglés.

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html#Motivation
Título: usar stl
Publicado por: AK47 en 05 de Septiembre de 2007, 01:34:33 PM
Muy interesante eso de las EASTL. ¿Sabes si hay alguna propuesta para que lo liberen?

Aún así yo insisto en que usamos las STL en nuestro juego y no suponen (por ahora claro) ningún problema en rendimiento ni memoria.