First, I compiled my .escript files to .beam, I did this with this bash script:
erlsee.sh (get it?):
#!/usr/bin/bash test=$1 echo $test args=("$@") file="$1" echo ${file} temp_file=$1.tmp echo $temp_file cp $file $temp_file file=`echo "$1" | sed s/.escript/.erl/g` sed -n '1!p' $temp_file > $file /usr/bin/env erlc $file cp $temp_file $file rm $temp_file
This allows you to compile an escript directly without having to remove the #! directives at the top or rename the file to have an .erl ending.
Secondly, I added the same #! headers to the .beam files, and set execution permissions (`chmod u+x *.beam`). Just open the .beam file with a text editor and paste the following lines at the top:
#!/usr/bin/env escript
%%! -smp disable
Third, I tested the running times with a very small input file with the 'time' utility. I figure this time should be dominated by the basic start up time, not the execution speeds.
$ time cat test.txt | ./runavg.escript -s 5 -i 5 | ./tgraph.escript
************************************************************************24
*********************************************15
real 0m2.077s
user 0m0.121s
sys 0m0.045s
$ time cat test.txt | ./runavg.beam -s 5 -i 5 | ./tgraph.beam
************************************************************************24
*********************************************15
real 0m2.182s
user 0m0.090s
sys 0m0.138s
I ran this multiple times, and the averages were almost equal; certainly not a big improvment. So it's not worth the extra effort to compile your escript files to .beam to improve startup times.
Execution time is another matter; it is probably improved, but that doesn't really matter for programs that just output text. They are fast enough as is.
No comments:
Post a Comment