Advertisement
Bienvenido a Squishdot Reportes Anuncios Debian Ciencia Linux
 principal
 nivel superior
 enviar artículo
 buscar
 administrar
 acerca de ...
 rdf
 rss
 main


reporte
Reportes Posted by angolero on Friday November 02, @12:37AM el 2007
from the dept.

Hola a todos

Pues como mencione en mi anterior reporte, mis actividades consistían en modificar partes de mi librería con el fin de evitar zonas del código en las cuales se creaban de manera continua nuevos objetos, esto es llamando a diversas funciones que recibían un objeto en ves de un puntero, así que me puse a reescribirlas, y después de lograrlo, no sin varias complicaciones, modificaciones de clases de prueba y un numero nada despreciable de talacha, logre obtener la actualización, la cual al probarla contra la versión vieja, resulto que ….. Era mucho mas lenta, jajaja, pues si, me temo que lo único que logre fue alentar la librería (ya que ambas hacen lo mismo), pero, no todo fue perdida, al probar tamaños de arreglos súper grandes, mi programa se caía, y después de vario análisis la respuesta llego de los súper sabios de la red, no se puede tener un array demasiado grande ya que no se puede sobrepasar el tamaño del stack, en Linux se puede ampliar (de manera explicita), pero en Windows es de tamaño fijo, así que la honda es, crear los contenedores en tiempo de ejecución para que radiquen en el heap, es decir, usar contenedores de tipo vector de la librería estándar de c++, el saber esto es muy bueno, ya que puedo ir corrigiéndolo de un ves y probando como influye dentro de la optimización de la librería.

Además, cuando tuve tan chusco resultado, me di cuenta que debí hacer caso de los sabios de la programación desde un principio y utilizar un profiler, y pues claro, utilice uno, y dentro de la lista de las funciones más utilizadas (dadas por el profiler), tome una y siguiendo los consejos de los sabios, logre a la primera que desapareciera de la lista, lo cual me pareció de lo mejor sin duda alguna, todavía no e comparado la diferencia de tiempo de ejecución entre la librería vieja y la modificada, pero deseo modificar unas cuantas funciones mas antes de la prueba del tiempo, a fin de cuentas, el que desaparezca de la lista (que cotiza tiempo de ejecución contra numero de veces llamada) es de alguna manera lo mismo.

Otro de los descubrimientos interesantes que surgieron de mi aventura optimizadora, fue que al probar el ejecutable que salía de cigwin, en la lista del profiler solo aparecía cygwin.dll, con lo que resultaba evidente, por que tanta gente habla del susodicho dll, como de los mas odiados dlls a la hora de distribuir a terceros, algún programa creado y compilado en cygwin, al parecer tu código queda por completo embebido dentro de cygwin (muy de esperar), lo cual no sucede con visual Studio cuando usas algo en Windows ya que como sea cargaste los dlls de Windows para usar Windows jaja.

Y como la versión de comandos en línea del visual Studio es gratis, pues en Windows visual y en Linux gcc, queda claro, lo vello de cygwin es que te permite que el código se pruebe para ambos ambientes de trabajo sin tener que estar reiniciando la maquina etc.

Pronto les contare el siguiente capitulo de las aventuras del angolero en el mundo de la optimización, con la esperanza que surja algo mas interesante y divertido, aunque como dijo Edison cuando inventaba el foco, no es que falle 1000 veces al crear el foco, es que descubrí mil maneras de cómo no se hace un foco (o algo así).

Suerte y buena vibra.                 


El menú ya se autoactualiza | ouroborus reporta  >

 

Related Links
  • Articles on Reportes
  • Also by angolero
  • Contact author
  • The Fine Print: The following comments are owned by whoever posted them.
    ( Reply )

    Powered by Zope  Squishdot Powered
      "Any system that depends on reliability is unreliable." -- Nogg's Postulate
    All trademarks and copyrights on this page are owned by their respective companies. Comments are owned by the Poster. The Rest ©1999 Butch Landingin.
    [ home | post article | search | admin ]