alias jerk_min {
return $gettok($sorttok($1-,32,n),1,32)
}
alias code_min {
var %m = $1, %i = $0
while (%i > 1) {
if ($eval($ $+ %i,2) < %m) %m = $ifmatch
dec %i
}
return %m
}
alias bench {
var %i = 0
var %jerk_ticks = 0
var %code_ticks = 0
while (%i < 10000) {
var %nums = $genrandnums($rand(1,50))
var %start = $ticks
.echo -q $jerk_min(%nums)
var %end = $ticks
%jerk_ticks = $calc(%jerk_ticks + (%end - %start))
var %start = $ticks
.echo -q $code_min(%nums)
var %end = $ticks
%code_ticks = $calc(%code_ticks + (%end - %start))
inc %i
}
.echo -a jerk_min took %jerk_ticks ticks
.echo -a code_min took %code_ticks ticks
}
;picks $1 random numbers
alias genrandnums {
var %i = $1
var %nums
while (%i) {
set %nums %nums $+ $rand(-4294967295,4294967295) $+ $chr(44)
dec %i
}
return $left(%nums,-1)
}
;$rand doesn't like negative numbers, so here is one that does
alias negrand {
if ($1 > -1 && $2 > -1) return $rand($1,$2)
if ($1 < 0 && $2 < 0) return - $+ $rand($abs($1),$abs($2))
else {
var %hi = $calc($abs($1) + $abs($2))
var %lo = $iif($1 < $2,$1,$2)
return $calc($rand(0,%hi) + %lo)
}
}