er好强大啊
比较下 taker 0.17 秒 真的快了不少{:yxh5:} {:yxh71:} 不科学啊{:yxh4:}
perl 17 秒
python 6.5 秒
er%-module(e).
-module(tak).
-mode(native).
-define(P, io:format).
-export().
tak(X, Y, Z) ->
if
Y >= X -> Z;
true ->
tak(
tak(X - 1, Y, Z),
tak(Y - 1, Z, X),
tak(Z - 1, X, Y)
)
end
.
bm() ->
lists:foreach(
fun(_) ->
{Time, _} = timer:tc(tak, bm_testcase, []),
TimeSec = Time / 1000000,
?P("~p~n", )
end,
lists:seq(1, 5)
)
.
bm_testcase() ->
lists:foreach(
fun(_) ->
tak:tak(24, 16, 8)
end,
lists:seq(1, 10)
)
.
main(_) ->
bm(),
halt().
pythonuse Time::HiRes qw(time);
$|++;
bm_tak(5);
sub bm_tak {
my $n = shift;
for ( 0 .. $n ) {
my ( $i, $x ) = ( 0, time );
while ( $i < 10 ) {
tak( 24, 16, 8 );
$i++;
}
print time - $x . "\n";
}
}
sub tak {
my ( $x, $y, $z ) = @_;
if ( $y >= $x ) {
return $z;
}
else {
return tak(
tak( $x - 1, $y, $z ),
tak( $y - 1, $z, $x ),
tak( $z - 1, $x, $y )
);
}
}
perl
import time
def tak(x, y, z):
if y >= x: return z
return tak(tak(x - 1, y, z), tak(y - 1, z, x), tak(z - 1, x, y))
for k in range(0, 5):
t = time.time()
i = 0
while i < 10:
tak(24, 16, 8)
i += 1
print("%.02f" % (time.time() - t))
真的不科学啊{:yxh48:} 不科学啊
真的不科学啊{:yxh4:}
er0.17 秒
perl 17 秒
页:
[1]