EZV said:...
Taxem ten scriptik trochu zrychlil, Na mem note s 32bitovou Fedora13 z 4m55.9s na 0m7.5s. A porad pouzivam tu divnou vec, ktera se jmenuje bc.
6/29/2010 5:10
BruXy said:...
Updatnul jsem verzi, od bc se odprostil a mám to spočítané za půl druhé vteřiny :)
12/13/2010 10:49
EZV said:...
Jo, ta posledni verze je jeste rychlejsi, nez byla ta moje. Nicmene pouziti bc v te moji verzi bylo IMHO docela inovativni. :-)
[fantomas@cave MANDELBROT]$ ls -l 7
-rw-rw-r--. 1 fantomas cave 1227 Jun 30 2010 7
[fantomas@cave MANDELBROT]$ cat 7
#!/bin/sh
# To jsem ale prase. Ovsem je to vyrazne rychlejsi. Testovano: Fedora13. EZV
LI=$(tput lines)
CO=$(tput cols)
MA=32
###echo "$COLUMNS $LINES $CO $LI"
###exit 1
rm -f /tmp/i /tmp/o || exit 1
mkfifo -m 600 /tmp/i /tmp/o || exit 1
bc -q </tmp/i >/tmp/o &
P=$!
exec 7>/tmp/i 8</tmp/o
S=(S H E L L);e=echo;g="read -u 8";I=-1;u=-1;C=0
###for x in {1..24};
for (( x=1; x<=$LI; x=$((x+1)) ))
do
R=-2
###for y in {1..80}
for (( y=1; y<=$CO; y=$((y+1)) ))
do
B=0;r=0;i=0
while [ $B -le $MA ]
do
$e -e "$r*$r\n$i*$i" >&7; $g r2; $g i2
$e -e "2*$i*$r+$I\n$r2-$i2+$R\n($r2 +$i2)>4" >&7; $g i; $g r; $g V
B=$((B+1))
[ "$V" -eq 1 ] && break
done
if [ $B -ge $MA ]
then
$e -n " "
else
U=$(((B*4)/15+30))
T=""
[ $U -ne $u ] && T="\E[01;${U}m"
$e -en "$T${S[C]}"
C=$(((C+1)%5))
u=$U
fi
$e "$R+0.03125" >&7; $g R
done
$e ""
$e "$I+0.08333" >&7; $g I
done
$e -en "\E[m\E(\r"
exec 7>/dev/null 8</dev/null
wait $P
rm -f /tmp/i /tmp/o
#(c)BruXy
[fantomas@cave MANDELBROT]$
4/1/2011 8:18
Anonymous said:...
A muj vzorne naformatovany shell script byl postnutim, koukam, autoobfuskovan. :-)
4/1/2011 8:21
EZV said:...
OK, jeste tedy zdarma 2x rychleji, tac verze... :-)
[fantomas@cave MANDELBROT]$ cat 8
#!/bin/sh
# To jsem ale prase. Ovsem je to vyrazne rychlejsi. Testovano: Fedora13. EZV
LI=$(($(tput lines)/2))
CO=$(tput cols)
MA=32
###echo "$COLUMNS $LINES $CO $LI"
###exit 1
rm -f /tmp/i /tmp/o || exit 1
mkfifo -m 600 /tmp/i /tmp/o || exit 1
bc -q </tmp/i >/tmp/o &
P=$!
exec 7>/tmp/i 8</tmp/o
S=(S H E L L);e=echo;g="read -u 8";I=-1;u=-1;C=0
(
###for x in {1..24};
for (( x=1; x<=$LI; x=$((x+1)) ))
do
R=-2
###for y in {1..80}
for (( y=1; y<=$CO; y=$((y+1)) ))
do
B=0;r=0;i=0
while [ $B -le $MA ]
do
$e -e "$r*$r\n$i*$i" >&7; $g r2; $g i2
$e -e "2*$i*$r+$I\n$r2-$i2+$R\n($r2 +$i2)>4" >&7; $g i; $g r; $g V
B=$((B+1))
[ "$V" -eq 1 ] && break
done
if [ $B -ge $MA ]
then
$e -n " "
else
U=$(((B*4)/15+30))
T=""
[ $U -ne $u ] && T="\E[01;${U}m"
$e -en "$T${S[C]}"
C=$(((C+1)%5))
u=$U
fi
$e "$R+0.03125" >&7; $g R
done
$e ""
$e "$I+0.08333" >&7; $g I
done
) | tee /dev/tty | tac
$e -en "\E[m\E(\r"
exec 7>/dev/null 8</dev/null
wait $P
rm -f /tmp/i /tmp/o
#(c)BruXy
[fantomas@cave MANDELBROT]$
4/1/2011 8:54