File: leak.pl

package info (click to toggle)
libmath-bigint-gmp-perl 1.7003-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,016 kB
  • sloc: pascal: 3,998; perl: 280; makefile: 9; sh: 1
file content (41 lines) | stat: -rwxr-xr-x 1,278 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/perl -w

use strict;
use lib 'lib';
use lib 'blib/arch';
use Math::BigInt lib => 'GMP';
use Devel::Leak;

my $x = Math::BigInt->new(44);
my $y = Math::BigInt->new(21);

require Scalar::Util;   # otherwise the first sub would do this

my $xg = Math::BigInt::GMP->_new("44");
my $yg = Math::BigInt::GMP->_new("21");

for my $do (
  [ sub { $xg = Math::BigInt::GMP->_div($xg,$yg); 1; }, 'divide direct' ],
  [ sub { my $z = $x / $y; 1; }, 'divide' ],
  [ sub { my $z = $x - $y; 1; }, 'subtract' ],
  [ sub { my $z = $x + $y; 1; }, 'add' ],
  [ sub { my $z = $x % $y; 1; }, 'mod' ],
  [ sub { my $z = $x ** $y; 1; }, 'pow' ],
  [ sub { my $z = $x ^ $y; 1; }, 'xor' ],
  [ sub { my $z = $x | $y; 1; }, 'ior' ],
  [ sub { my $z = $x & $y; 1; }, 'and' ],
  [ sub { my $z = $x; $z -= $y; 1; }, '-=' ],
  [ sub { my $z = $x; $z += $y; 1; }, '+=' ],
  [ sub { my $z = $x; $z %= $y; 1; }, '%=' ],
  [ sub { my $z = $x; $z /= $y; 1; }, '/=' ],
  [ sub { my ($q,$r) = $x->copy()->bdiv($y); 1; }, '(q,r) = x / y' ],
  [ sub { $x->_trailing_zeros(); }, '_zeros(x)' ],			# needs an even number!
 )
  {
  my $handle;
  my $count = Devel::Leak::NoteSV($handle);
  for (1..13) { &{$do->[0]}; }
  print "$do->[1] leaked ", Devel::Leak::CheckSV($handle) - $count, " things\n";
  }

exit;