[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: rendimiento de scripts



On 8/15/07, Iñigo Tejedor Arrondo <txiuaua@telefonica.net> wrote:
> Hola,
>
> Al hilo de obtener la carga de cpu, me ha surgido una duda de la que
> siempre he odido hablar. Siempre se ha dicho que un programa en C, es
> más rápido que un script grande... Incluso en gentoo había un proyecto
> para migrar los scripts de arranque a programas en C con ficheros de
> configuración, percisamente para optimizar el tiempo de arranque...
>
> El caso es que si nos ponemos manos a la obra:
> No es más rápido. Imagino que porque cat, depende de las mismas tres
> librerias que dependía holamundo. He probado el holamundo compilado de
> manera estática y también con optimización de nivel 2 y 3, pero siempre
> es más lento.
>
> No tengo capacidad ni ganas para transcribir un script grande (digamos
> p.ej. de más de 100 lineas y que llame a otros scripts) a C en estado
> puro, usando solo librerías y no programas externos, pero...
>
> ¿es realmente C más rápido que bash? ¿o depende de las circunstancias?

La eficiencia de un programa no depende tanto del lenguaje sino como
de la implementación en sí. Un algoritmo de ordenación escrito en el
lenguaje que sea va a ser lento si el algoritmo es malo o se lo
compara con el archi-conocido "sort" por la simple razón de que éste
último es un proyecto maduro y ultra-optimizado para hacer muy bien lo
que hace.

En cuanto a tu pregunta, es muy probable que el echo que hayas
utilizado sea un built-in de bash y no el comando en sí. Si es así,
entonces la diferencia en rendimiento es muy probable que sea porque
no hace falta cargar un ejecutable y hacer cambios de contexto y todo
eso sino simplemente que bash se encarga de todo. Si no es así,
entonces podríamos volver al caso anterior en el que echo es una
aplicación muy bien optimizada para hacer lo que hace.

Una prueba interesante sería hace que se imprima 1000 veces el mismo
string. Con un bucle dentro del programa en C y aprovechando un "for"
de bash y comparar el rendimiento de eso. Cuando estamos haciendo
mediciones, siempre es bueno probar diferentes situaciones
repetitivamente para minimizar influencias externas y más veces
todavía cuando lo que estamos midiendo es tan pequeño y no disponemos
de formas de "calibrar" los instrumentos de medida.

Saludos,
Toote

-- 
Web: http://www.enespanol.com.ar



Reply to: