Programar en Linux

Horst H. von Brand vonbrand en inf.utfsm.cl
Lun Oct 23 17:26:38 CLST 2006


Germán Poó Caamaño <gpoo en ubiobio.cl> wrote:
> On Mon, 2006-10-23 at 14:00 -0300, Horst H. von Brand wrote:
> > Juan Martínez <jeugenio en umcervantes.cl> wrote:
> > [...]
> > > Un lenguaje compilado, en general, siempre (o casi siempre) sera la
> > > mejor alternativa a usar.
> > [...]
> > >                           Sobre todo si es para un sistema complejo
> > > (un SIA por ejemplo), dado que será mas rapido que un lenguaje
> > > interpretado.
> > 
> > Lo cual es totalmente irrelevante. Que el SIA se demore 0,5s o 0,01s en
> > responder, si el perejil en la pagina web al otro lado de Chile luego pasa
> > 5s pensando que hacer a continuacion no hace particular diferencia. Si, si
> > tienes decenas de miles de usuarios simultaneos es vital, pero eso se da
> > solo cuando muestran los resultados de las elecciones ;-)

> > [Si, /hay/ casos en los cuales el rendimiento realmente es crucial, pero
> >  son muchisisimos menos de lo que uno cree. Ve y mira la carga en tu
> >  "servidor" vecino, rara vez pasa del 40% en mi experiencia, tipicamente
> >  mucho menos...]

> Esa postura, que si bien comparto en parte, es peligrosa.  Sobre todo en
> manos inexpertas que pueden creerte a ojos cerrado todo lo que dices.

Tienes razon con eso tambien...

> Bajo esa lógica, hay muchos /ingenieros de software/ que los problemas
> de rendimiento se lo achacan a la máquina, al sistema operativo, al
> motor de base de datos o a lo "complejo del sistema".  Jamás al mal
> diseño de sus algoritmos o de la lógica retorcida de sus propios
> programas.

Si, /vivamente/ recuerdo un caso de una generacion de listados que se
demoraba horas (literalmente!), y eso /despues/ de multiplicar por 4 la
maquina seguia en las mismas; una reestructuracion de las consultas a la BD
bajo eso a cosa de un minuto. Tiempo invertido: Una media tarde...

[...]

> Eso escapa al lenguaje, escapa incluso si es compilado o interpretado.
> Y aunque las HH sean más caras, cuando esas HH te exigen aumentar el
> HW una vez al año a una potencia 4 veces mayor... 

Lamentablemente no hay ley de Moore para las HH... mas bien parece que lo
contrario :-(


El punto final de "mejorar rendimiento" es:

- Es suficiente? Si es asi, OK. Salir a carretear... [Mejorar rendimiento
  si ya es suficiente no tiene particular chiste...]
- No es suficiente? Estudiar el problema, /a todo lo ancho/: Considerar mas
  maquina, cambio de lenguaje, distribuir datos entre varios discos, ... La
  experiencia muestra que /lejos/ lo que mas influye es eleccion cuidadosa
  de los algoritmos y estructuras de datos (representaciones). Lo que se
  puede ganar por otras vias suele ser mas bien menor (aunque un factor de
  2 tampoco es despreciable, pero no es trivial de conseguir en ninguna de
  las areas...). Ver donde se obtiene el maximo aumento con minimo costo
  [Si, hay que sentarse a /medir/ donde se va el tiempo/memoria/lo que
  falte!], mejorar eso.
- Enjuagar, repetir.

Ojo, las mediciones hay que hacerlas con "datos reales", los "casos de
prueba" /no/ sirven, porque precisamente estan cocinados para revisar
detalladamente (incluso) lo que pasa en situaciones anomalas e
infrecuentes, mientras nos interesa un rabano el funcionamiento en casos
extraordinarios, aca nos interesan las situaciones tipicas.

[Se ve que en ninguna parte dice "la solucion es un lenguaje compilado"? Se
 ve que no hay una unica solucion al problema, cierto?]
[[Si, toda esa challa que les ensen~an /es/ importante. Desde la
  organizacion general del sistema (via monitos varios) hasta llegar a su
  implementacion en programas.]]
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                    Fono: +56 32 2654431
Universidad Tecnica Federico Santa Maria             +56 32 2654239
Casilla 110-V, Valparaiso, Chile               Fax:  +56 32 2797513


Más información sobre la lista de distribución Linux