Article View: es.comp.os.linux.programacion
Article #2107Re: ¿Se puede cargar el intérprete de Perl como un servidor?
From: Gonzalo Pérez de Olaguer Córdoba
Date: Thu, 14 Apr 2005 12:52
Date: Thu, 14 Apr 2005 12:52
66 lines
3935 bytes
3935 bytes
Hola Gorka Olaizola <gorka@helvete.escomposlinux.org> el Thu, 14 Apr 2005 13:59:23 +0200 escribiste: > Ahora mismo tengo esto: > > use Digest::MD5 qw( md5_hex ); > use POSIX; > use Locale::gettext; > use Getopt::Long; > > ¿Si pongo "qw" para las funciones de POSIX, gettext y Getopt que uso tardará > menos en cargar? No te fíes mucho de lo que voy a decir, es pura especulación, pero me extrañaría que la carga de esos módulos fuese el problema. Ten en cuenta que el proceso completo incluye: - cargar el intérprete de perl - cargar los scripts - cargar los módulos - compilarlo todo - esperar a tener datos disponibles - leerlos y procesarlos Es probable que el intérprete de perl esté en memoria o cacheado tras la primera ejecución, así como los scripts y el resto de módulos. Sólo si el ordenador tuviese una carga muy alta sería de esperar que entre una ejecución y otra todo lo cargado se haya perdido de las cachés de memoria. Y aún así, la recuperación desde disco tampoco creo que tardase demasiado. El punto clave sospecho que debe ser la fase de compilación, que debe realizarse cada vez, aunque los scripts no hayan cambiado. Me suena que hay métodos para *compilar* perl scripts: se genera el P-code (o como se llame) y se utiliza éste en vez del script original. Eso debe acelerar la carga, pues no hace falta recompilar nada. Otra solución que se me ocurre, pero ignoro si será complicado implementarla, sería rediseñar los scripts con el siguiente objetivo: - ejecutas el script - se carga el intérprete de perl, el script y los módulos - se compila todo (use, requires, etc) - el programa principal se mete en un bucle a la espera de datos - al recibir datos los lee y se hace un fork. El hijo se encarga de procesar los datos mientras que el padre regresa al bucle a la espera de recibir nuevos datos. De esta manera en cuanto se reciben nuevos datos el sistema está preparado par procesarlos sin necesidad de cargar/compilar nada. Encontrarás un ejemplo de algo parecido en el miniserv.pl de webmin. Es un servidor web escrito en perl. Por lo que he leido de la documentación de spamassassin también éste implementa algo parecido (spamd/spamc). Son sólo ideas. Tómatelas con reservas y decide tú mismo si te lías la vida con ellas o no. Suerte. -- Gonzalo Pérez de Olaguer Córdoba <gpoc@iies.es> PGP key 2861C704 --- F206 5671 6789 425D 111C 1302 214F 1934 2861 C704
Technical Details
Message-ID:
<20050414145257.375e910f@petres.salonet.snet>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news.antakira.com!cagarruta.escomposlinux.org!appleseed.escomposlinux.org!tramontana.escomposlinux.org!escomposlinux.org!pinsa.escomposlinux.org!not-for-mailReferences:
<slrnd5s5b3.prl.gorka@conn.helvete.escomposlinux.org> <d3lhq9$og8$1@appleseed.escomposlinux.org> <slrnd5smor.1o9.gorka@conn.helvete.escomposlinux.org>Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,37b69c33ffa47967 X-Google-Attributes: gidf86c8,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news.antakira.com!cagarruta.escomposlinux.org!appleseed.escomposlinux.org!tramontana.escomposlinux.org!escomposlinux.org!pinsa.escomposlinux.org!not-for-mail From: Gonzalo Pérez de Olaguer Córdoba <gpoc@iies.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: ¿Se puede cargar el intérprete de Perl como un servidor? Date: Thu, 14 Apr 2005 14:52:57 +0200 Organization: Ecolnet Lines: 66 Message-ID: <20050414145257.375e910f@petres.salonet.snet> References: <slrnd5s5b3.prl.gorka@conn.helvete.escomposlinux.org> <d3lhq9$og8$1@appleseed.escomposlinux.org> <slrnd5smor.1o9.gorka@conn.helvete.escomposlinux.org> NNTP-Posting-Host: 59.red-80-25-103.pooles.rima-tde.net Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable X-Trace: pinsa.escomposlinux.org 1113483182 18457 80.25.103.59 (14 Apr 2005 12:53:02 GMT) X-Complaints-To: newsmaster@pinsa.escomposlinux.org NNTP-Posting-Date: Thu, 14 Apr 2005 12:53:02 +0000 (UTC) X-Newsreader: Sylpheed-Claws 0.9.12b (GTK+ 1.2.10; i386-pc-linux-gnu)