He hecho unas cuantas pruebas con bash y con Python, y los resultados son:
trad.py ~ 0.35 s
trad-1.sh ~ 0.34 s
trad-2.sh ~ 0.14 s
Donde el tiempo está medido como el output de:
/usr/bin/time -f %e script "follow the road for the next 1.6 kilometer"
ejecutado en la línea de comando del Neo. Los scripts son:
trad.py
-------
#!/usr/bin/python
# coding=utf-8
import os
import sys
texto = ' '.join(sys.argv[1:])
trads = {
'follow the road' : 'siga la carretera',
'for the next' : 'durante los próximos',
'kilometer' : 'kilómetros' }
for en in trads:
es = trads[en]
texto = texto.replace(en,es)
print texto
trad-1.sh
---------
#!/bin/bash
EN=( 'follow the road'
'for the next'
'kilometer' )
ES=( 'siga la carretera'
'durante los próximos'
'kilómetros' )
TXT=$*
for IX in ${!EN[*]}
do
TXT=`echo $TXT | sed "s/${EN[$IX]}/${ES[$IX]}/g"`
done
echo $TXT
trad-2.sh
---------
#!/bin/bash
echo $* | sed 's/follow the road/siga la carretera/g;s/for the
next/durante los próximos/g;s/kilometer/kilómetros/g'
Claramente trad-2 es más macarrónico, pero mucho más eficiente.
Hay que reseñar que el script de Python tarda unos 0.35 s en cargar, y
unos 0.00 s (más o menos, jejeje) en realmente ejecutarse. Es decir, que
un scrip que contenga solamente la primera línea (#!/usr/bin/python) ya
tarda su tercio de segundo en correr en el Neo (probadlo).
Por el contrario, un script de bash tarda casi un orden de magnitud
menos (~0.05 s) en cargar, pero como su manejo de estructuras de datos
es sui generis, si intentamos emular la estructura del script Python
(trad-1.sh) la ejecución tarda casi igual. Hecho de una manera más
"shell" (trad-2.sh), se ahorra tiempo.
También se puede probar en Perl, pero diría que si trad-2.sh es viable,
se puede dejar tal cual.
Iñaki
[hidden email] wrote:
> Quoting juanmol <
[hidden email]>:
>
>> oie!! va de arte!! voy a configurar el navit para que guarde todo lo que
>> deberia decir, y asi completo el traductor este que te as currao. Tiene solo
>> una pega, creo que tarda mucho en arrancar el script. He probado arracarlo a
>> mano y se lleva un segundo o dos antes de ejecutarse ¿es por el python? ¿se
>> puede acelerar un poco?
>
> Puestos a usar python "sólo para eso", igual te conviene más usar un
> script de bash a pelo que haga "sed" concatenados de las cadenas en
> inglés, del estilo:
>
>
> texto = echo $1 | sed "s/follow the road/siga la carretera/g" | sed
> "s/fon the next/durante los próximos/g" | sed blablabla...
>
> spd-say -l es "$texto"
>
> (Se puede arreglar con variables de traducción para que quede la cosa
> más maja).
--
Iñaki Silanes, Ph.D.
Instituto de Física de Cantabria (IFCA)
http://isilanes.orgBlog:
http://handyfloss.net_______________________________________________
Local-openmoko-spain mailing list
[hidden email]
http://lists.projects.openmoko.org/mailman/listinfo/local-openmoko-spain