Mejoras en los rendimientos de la aplicación

21/08/2004 - 21:05 por Juan Pedro Gonzalez | Informe spam
Hola,

Durante los ultimos años parece que se ha perdido la costumbre de optimizar
la velocidad y el uso de memoria de las aplicaciones. Posiblemente esto ha
sucedido al contar con equipos mas rapidos, memoria RAM mas barata, etc...
asi como por una confianza ciega en las optimizaciones del compilador.
Actualmente, parece que la gente que anda programando para Pocket PC se
plantea un poco mas estos aspectos.

Personalmente me gustaria poder obtener algunas ideas para optimizar el
rendimiento de mis aplicaciones, por lo que agradeceria si alguna persona
pudiese brindar algunas ideas propias.

Personalmente me gusta compartir la informacion que tengo cuando realizo una
pregunta de este tipo asi que ahi van algunos datos y espero que alguien
exponga algun dato adicional.

En primer lugar he estado mirando la comparativa de cadenas. Por lo que he
podido observar la igualdad 'Equals' resulta hasta dos veces mas rápida que
la clasica igualdad (Uso del simbolo Igual)... De la misma forma, si estamos
buscando una cadena vácia resulta hasta 4 veces mas rapido realizar un
.Length = 0 que el .Equals("").

Tambien he podido observar que la comparativa "If Variable Is Nothing Then"
es unas cinco veces mas rápida que la comparativa "If IsNothing(Variable)
Then".

Continuando con las comparativas, me he encontrado que si tenemos dos tipos
numericos (Ya sean dos Enteros, o un Entero y un Entero largo), la
comparativa Equals es considerablemente mas lenta que la igualdad clasica
(Empleando el simbolo de igualdad '='), sin embargo si uno de los factores
es de tipo numérico y el otro es de tipo cadena (String) la igualdad clasica
es unas 37 veces mas lenta que el empleo de la igualdad Equals.

Estos datos son aproximados.

Si alguien tiene algun dato adicional rogaría que lo compartiese.

Muchas gracias de antemano.

Preguntas similare

Leer las respuestas

#6 Javier González
22/08/2004 - 11:15 | Informe spam
La gente habla tanta mierda de tí porque es lo que eres,
un niñato de mierda.

Compráte un libro de ortografía, o si no tienes dineros,
pídele a tu papaíto que te lo compre, pedazo de
analfabeto.


Despues de hablar tanta mierda de mi.
Utedes aportaron a algo de lo que pregunto Juan Pedro
Gonzalez.?no? Tonce se quejan que no aporto pero por lo
que veo no soy el unico.


Miao



Hola,

Durante los ultimos años parece que se ha perdido la


costumbre de optimizar
la velocidad y el uso de memoria de las aplicaciones.


Posiblemente esto ha
sucedido al contar con equipos mas rapidos, memoria RAM


mas barata, etc...
asi como por una confianza ciega en las optimizaciones


del compilador.
Actualmente, parece que la gente que anda programando


para Pocket PC se
plantea un poco mas estos aspectos.

Personalmente me gustaria poder obtener algunas ideas


para optimizar el
rendimiento de mis aplicaciones, por lo que agradeceria


si alguna persona
pudiese brindar algunas ideas propias.

Personalmente me gusta compartir la informacion que


tengo cuando realizo una
pregunta de este tipo asi que ahi van algunos datos y


espero que alguien
exponga algun dato adicional.

En primer lugar he estado mirando la comparativa de


cadenas. Por lo que he
podido observar la igualdad 'Equals' resulta hasta dos


veces mas rápida que
la clasica igualdad (Uso del simbolo Igual)... De la


misma forma, si estamos
buscando una cadena vácia resulta hasta 4 veces mas


rapido realizar un
..Length = 0 que el .Equals("").

Tambien he podido observar que la comparativa "If


Variable Is Nothing Then"
es unas cinco veces mas rápida que la comparativa "If


IsNothing(Variable)
Then".

Continuando con las comparativas, me he encontrado que


si tenemos dos tipos
numericos (Ya sean dos Enteros, o un Entero y un Entero


largo), la
comparativa Equals es considerablemente mas lenta que




la
igualdad clasica
(Empleando el simbolo de igualdad '='), sin embargo si


uno de los factores
es de tipo numérico y el otro es de tipo cadena




(String)
la igualdad clasica
es unas 37 veces mas lenta que el empleo de la igualdad


Equals.

Estos datos son aproximados.

Si alguien tiene algun dato adicional rogaría que lo


compartiese.

Muchas gracias de antemano.



.



.

Respuesta Responder a este mensaje
#7 DJ_MIAO
22/08/2004 - 15:29 | Informe spam
Flaco eres el quinto que tampoco aporta nada a a la
pregunta de Juan.

No tengo dinero para un libro de ortografia . Pidele a tu
madre que me de las tutorias.?


Miao...


La gente habla tanta mierda de tí porque es lo que eres,
un niñato de mierda.

Compráte un libro de ortografía, o si no tienes dineros,
pídele a tu papaíto que te lo compre, pedazo de
analfabeto.


Despues de hablar tanta mierda de mi.
Utedes aportaron a algo de lo que pregunto Juan Pedro
Gonzalez.?no? Tonce se quejan que no aporto pero por lo
que veo no soy el unico.


Miao



Hola,

Durante los ultimos años parece que se ha perdido la


costumbre de optimizar
la velocidad y el uso de memoria de las aplicaciones.


Posiblemente esto ha
sucedido al contar con equipos mas rapidos, memoria






RAM
mas barata, etc...
asi como por una confianza ciega en las optimizaciones


del compilador.
Actualmente, parece que la gente que anda programando


para Pocket PC se
plantea un poco mas estos aspectos.

Personalmente me gustaria poder obtener algunas ideas


para optimizar el
rendimiento de mis aplicaciones, por lo que






agradeceria
si alguna persona
pudiese brindar algunas ideas propias.

Personalmente me gusta compartir la informacion que


tengo cuando realizo una
pregunta de este tipo asi que ahi van algunos datos y


espero que alguien
exponga algun dato adicional.

En primer lugar he estado mirando la comparativa de


cadenas. Por lo que he
podido observar la igualdad 'Equals' resulta hasta dos


veces mas rápida que
la clasica igualdad (Uso del simbolo Igual)... De la


misma forma, si estamos
buscando una cadena vácia resulta hasta 4 veces mas


rapido realizar un
..Length = 0 que el .Equals("").

Tambien he podido observar que la comparativa "If


Variable Is Nothing Then"
es unas cinco veces mas rápida que la comparativa "If


IsNothing(Variable)
Then".

Continuando con las comparativas, me he encontrado que


si tenemos dos tipos
numericos (Ya sean dos Enteros, o un Entero y un






Entero
largo), la
comparativa Equals es considerablemente mas lenta que




la
igualdad clasica
(Empleando el simbolo de igualdad '='), sin embargo si


uno de los factores
es de tipo numérico y el otro es de tipo cadena




(String)
la igualdad clasica
es unas 37 veces mas lenta que el empleo de la






igualdad
Equals.

Estos datos son aproximados.

Si alguien tiene algun dato adicional rogaría que lo


compartiese.

Muchas gracias de antemano.



.



.



.

Respuesta Responder a este mensaje
#8 Leonardo Azpurua
22/08/2004 - 17:12 | Informe spam
"DJ_MIAO" escribió en el mensaje
news:abfc01c48805$e523f710$
Despues de hablar tanta mierda de mi.
Utedes aportaron a algo de lo que pregunto Juan Pedro
Gonzalez.?no? Tonce se quejan que no aporto pero por lo
que veo no soy el unico.
-

Hola, Miao:

"Comprate más memoria" no es una respuesta razonable a lo que plantea Juan
Pedro.

Si revisas su mensaje, verás que manifiesta una inquietud por la pérdida de
interés en los métodos de optmización, justamente porque los desarrolladores
tendemos a confiar en el rendimiento del hardware y en las optimizaciones
internas de los compiladores.

Si tienes que desarrollar un sistema para doscientos terminales, por
ejemplo, "comprate más memoria" es una solución inaceptable (qué empresa
está dispuesta a gastar 20.000 USD en memoria adicional porque el
programador es amante de las salidas fáciles.

Encuentro que de vez en cuando haces un aporte válido. Pero la mayor parte
de las veces simplemente metes ruido.

La tolerancia al ruido en estos foros es mucho mayor que en otros. Pero tu
metes DEMASIADO ruido.

Al final, creo que todos apreciamos tus contribuciones. Pero si refrenaras
un poco tu afán por convertirte en el protagonista del foro a cualquier
precio, hasta tu mismo te lo agradecerías.

Salud!
Respuesta Responder a este mensaje
#9 Juan Pedro Gonzalez
22/08/2004 - 19:58 | Informe spam
Hola,

Leonardo Azpurua te ha hecho una buena observacion acerca de esta respuesta
pero puedes encontrar mas razones por la que la optimizacion es buena e
incluso necesaria.

Por ejemplo, en una PDA tienes una memoria y un procesador limitado donde la
ampliacion no es nada sencilla, llegando al punto en el que deberias
adquirir una nueva PDA para solventar los problemas de procesador y memoria.
Si tienes entre manos una PDA cuyo precio no suele ser barato no tiende a
ser una buena idea decir: "Espera a que salga una PDA mas potente y mi
programa te ira bien", o "Gastate tu dinero en una nueva PDA".

Por otro lado en el mensaje no hablaba exclusivamente de RAM... Si llevas
algun tiempo programando de forma seria con bases de datos extensas podras
observar que ciertos programas llegan a consumir el 100% de la CPU durante
el tiempo que dura un cierto proceso. La compra de un nuevo procesador
reduce el tiempo que el uso de la CPU es del 100%. De todas formas en esos
casos es cuandose puede ver la destreza del programador, ya que con una
serie de optimizaciones del codigo puedes reducir el tiempo
significativamente. En un caso en concreto logre reducir el tiempo a un 50%
sin cambiar el proceador. Puede parecer una tonteria, pero reducir el tiempo
de 15 minutos a 7 minutos en un proceso es bastante significativo,
especialmente en un entorno de trabajo.

Tambien deberias saber que las personas tenemos formas diferentes de
programar. En mi caso no me considero infalible, y mis programas no son
siempre para mi, por lo que se que luego pediran modificaciones y demas. En
estas ocasiones la optimizacion de memoria y del resto de los recursos del
sistema son esenciales. Por ejemplo, una empresa puede pedirte que una
aplicacion haga mas cosas, sin embargo si le dices "Ya lo tengo pero ahora
en vez de 15 minutos te llevara 30" será inaceptable. Sin embargo es posible
que con una optimizacion del proceso logres unos tiempos similares y que la
empresa lo considere aceptable. Evidentemente si prefieres ir diciendo a tu
cliente "Tienes una nueva modificacion, pero tienes que actualizar todos tus
equipos" me parecera genial (Siempre y que yo no sea el cliente), pero no es
mi caso.

Por otro lado supongo que te habras dado cuenta que en la actualidad mucha
gente sabe programar (Con y sin estudios informaticos). Es posible que
muchas de estas personas puedan desarrollar un programa funcional para una
empresa grande con una base de datos extensa... Sin embargo en estos casos
te podras encontrar con unas calidades de programacion muy diversas. Por un
lado te sueles encontrar con Bases de Datos mal diseñadas, poco optimizadas,
etc... y luego por el otro lado te puedes encontrar con un programa poco
optimizado, o poco fiable. Cuando se juntan temas como una base de datos mal
diseñada, poco optimizada y un programa en las mismas condiciones, resulta
que para acabar un proceso puedes tardar hasta 30 minutos... Por otro lado
cuando todo funciona como debe y esta optimizado encuentras que el proceso
tarda 5 minutos. Si ahora consideras que dicho proceso es fundamental para
el funcionamiento de la empresa quiere decir que el usuario puede ejecutar
el proceso 16 veces en su jornada laboral, y el resto sera tiempo de espera,
sin embargo al optimizarlo lo podra ejecutar 96 veces en su jornada laboral.
Como podras imaginar eso repercute en la productividad y la fluidez del
trabajo en la empresa.

Supon ahora que se tratase de un programa que funciona en el Servidor
atraves de Terminal Server. Un consumo de la CPU del 100% es inadmisible, y
posiblemente tendras que ralentizar el proceso para mantener unos margenes
de uso del procesador. Reduciendo su consumo de CPU ralentizas el proceso,
luego si ralentizas el proceso optimizado a 30 minutos podrias reducir el
consumo de la CPU a un 60% sin embargo para lograr el mismo efecto en el
codigo no optimizado lo ejecutarias al inicio de tu jornada laboral y no
tendrias los resultados hasta el dia siguiente. ¿Aceptable? No lo creo.

Aun si nos salimos de todo este tema de empresas y programacion para
terceros, yo prefiero tener una aplicacion que tarda 30 segundos en realizar
su cometido que una que tarda 20 minutos. En una de las pruebas que he
realizado ya he mencionado una funcion que se ejecuta casi 40 veces mas
rapida que otra, y simplemente esa funcion podria causar esa diferencia de
30 segundos a 20 minutos. ¿Tu preferirias actualizar la CPU? Es eleccion de
cada uno, pero deberias considerar que cuando tengas una CPU que lo haga en
30 segundos yo no tendria que esperar ni un segundo con esa misma CPU... Es
decir por mucho que actualices siempre sera mas rápido.

De la misma forma uno uso masivo de la RAM (Aun teniendo espacio libre)
ralentizara tu programa. Si logras que el programa haga menos uso de la RAM
y mejor uso de la CPU te daras cuenta que el programa sera mucho mas fluido.

Actualmente hay muchos programadores que tienen una confianza ciega en las
optimizaciones de su compilador, y si no alcanza el rendimiento necesario lo
achacan a problemas de Hardware, sugieren actualizaciones de Hardware, o
deshechan el programa hasta que salga una maquina mas potente.

En mi opinion no es una solucion valida.

Tambien debo recalcar que no ando buscando respuestas, sino contribuciones.
Yo por mi parte sigo investigando por mi cuenta diferentes funciones y
tomando muestras para ver la diferencia que genera en mi programa (A fin de
cuentas un simple bucle para pruebas)... Luego paso las observaciones a mis
aplicaciones si lo considero apropiado. Evidentemente es un tiempo de
investigacion que me vendria bien para otros temas, y por eso deje el
mensaje por aqui, para ver si alguien ha encontrado otras mejoras
significativas y de esa forma me ahorro un tiempo realizando dichas pruebas.

Saludos





"DJ_MIAO" escribió en el mensaje
news:aa9501c487bf$d6087bc0$
Compra mas memoria ...

Miao..


Hola,

Durante los ultimos años parece que se ha perdido la


costumbre de optimizar
la velocidad y el uso de memoria de las aplicaciones.


Posiblemente esto ha
sucedido al contar con equipos mas rapidos, memoria RAM


mas barata, etc...
asi como por una confianza ciega en las optimizaciones


del compilador.
Actualmente, parece que la gente que anda programando


para Pocket PC se
plantea un poco mas estos aspectos.

Personalmente me gustaria poder obtener algunas ideas


para optimizar el
rendimiento de mis aplicaciones, por lo que agradeceria


si alguna persona
pudiese brindar algunas ideas propias.

Personalmente me gusta compartir la informacion que


tengo cuando realizo una
pregunta de este tipo asi que ahi van algunos datos y


espero que alguien
exponga algun dato adicional.

En primer lugar he estado mirando la comparativa de


cadenas. Por lo que he
podido observar la igualdad 'Equals' resulta hasta dos


veces mas rápida que
la clasica igualdad (Uso del simbolo Igual)... De la


misma forma, si estamos
buscando una cadena vácia resulta hasta 4 veces mas


rapido realizar un
..Length = 0 que el .Equals("").

Tambien he podido observar que la comparativa "If


Variable Is Nothing Then"
es unas cinco veces mas rápida que la comparativa "If


IsNothing(Variable)
Then".

Continuando con las comparativas, me he encontrado que


si tenemos dos tipos
numericos (Ya sean dos Enteros, o un Entero y un Entero


largo), la
comparativa Equals es considerablemente mas lenta que la


igualdad clasica
(Empleando el simbolo de igualdad '='), sin embargo si


uno de los factores
es de tipo numérico y el otro es de tipo cadena (String)


la igualdad clasica
es unas 37 veces mas lenta que el empleo de la igualdad


Equals.

Estos datos son aproximados.

Si alguien tiene algun dato adicional rogaría que lo


compartiese.

Muchas gracias de antemano.



.

Respuesta Responder a este mensaje
#10 Eduardo A. Morcillo [MS MVP VB]
22/08/2004 - 22:20 | Informe spam
Otro buen punto a tener en cuenta (y que poner mas RAM no mejora) es el uso
de indices para la tablas en una base de datos. Uno mas indices bien creados
pueden disminuir considerablemente el tiempo que tarda el motor de base de
datos en devolver el resultado de una consulta.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida