# The following was supposedly scribed by
# Maxim Nechaev
# on Friday 11 February 2005 01:23 am:
Looks like this one is still dangling. Did you get it solved? If so,
let us know.
>I'am trying simple benchmark of Inline::Python module and find
>uncontrolled grow of used proccess memory.
>Benchmark test:
I've added a memory-usage dumper, and cranked $n up by a factor of 10
since the original didn't really stress my machine that much.
#--------------------------------------
#!/usr/bin/perl
use Inline Python => <<'EOC';
def answer(a, b):
return a*b
EOC
use Benchmark;
$t = timeit(10_000_000, 'answer(6, 7)');
print timestr($t), "\n";
print 4 * (split(/\s/, `cat /proc/$$/statm`))[0], "\n";
#--------------------------------------
12:52:41: ~/notes/perl-snippets
$perl inline-python-memgrow.pl
8 wallclock secs ( 8.47 usr + 0.05 sys = 8.52 CPU) @ 117370.89/s
(n=1000000)
39156
12:53:00: ~/notes/perl-snippets
$perl inline-python-memgrow.pl
225 wallclock secs (210.05 usr + 0.69 sys = 210.74 CPU) @ 47451.84/s
(n=10000000)
331792
That 331MB certainly seems unreasonable.
Now the question is whether it's an Inline::Python issue or a
Benchmark.pm/perl problem. I've noticed strange behavior in recent
versions of perl with certain supposedly equivalent iterator constructs
for large values of $n (IIRC, something like @array = <FILE> taking
much longer than my @array;foreach my $line (<FILE>) {push(@array,
$line);})
Sorry I'm not going to chase this one any further right now. Maybe if
you nag me about it later.
--Eric
--
"Beware of bugs in the above code; I have only proved it correct, not
tried it."
-- Donald Knuth
---------------------------------------------
http://scratchcomputing.com
---------------------------------------------