[libmath-prime-util-perl] 05/11: factoring benchmarks
Partha P. Mukherjee
ppm-guest at moszumanska.debian.org
Thu May 21 18:44:16 UTC 2015
This is an automated email from the git hooks/post-receive script.
ppm-guest pushed a commit to annotated tag v0.03
in repository libmath-prime-util-perl.
commit 5c160e03f29dabe927f6908691093ea7954d5f3b
Author: Dana Jacobsen <dana at acm.org>
Date: Wed Jun 6 09:51:28 2012 -0600
factoring benchmarks
---
examples/bench-factor-semiprime.pl | 8 ++++----
lib/Math/Prime/Util.pm | 9 ++++-----
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/examples/bench-factor-semiprime.pl b/examples/bench-factor-semiprime.pl
index 9942cde..70f28e8 100755
--- a/examples/bench-factor-semiprime.pl
+++ b/examples/bench-factor-semiprime.pl
@@ -21,15 +21,15 @@ die "Digits has to be >= 2 and <= 19" unless $digits >= 2 && $digits <= 19;
print "Generating $numprimes random $digits-digit semiprimes (min factor $smallest_factor_allowed) ";
my @semiprimes;
foreach my $i ( 1 .. $numprimes ) {
- my $base = 10 ** ($digits-1);
- my $add = 10 ** ($digits) - $base;
+ my $base = int(10 ** ($digits-1));
+ my $add = int(10 ** ($digits)) - $base;
my @factors;
my $n;
while (1) {
$n = $base + int(rand($add));
- $n++ if ($n%2) == 0;
+ next if $n > (~0 - 4);
+ $n += 1 if ($n%2) == 0;
$n += 3 if ($n%3) == 0;
- next if $n > ~0;
@factors = factor($n);
next if scalar @factors != 2;
next if $factors[0] < $smallest_factor_allowed;
diff --git a/lib/Math/Prime/Util.pm b/lib/Math/Prime/Util.pm
index 5ee5404..998665a 100644
--- a/lib/Math/Prime/Util.pm
+++ b/lib/Math/Prime/Util.pm
@@ -517,11 +517,10 @@ Perl modules, counting the primes to C<800_000_000> (800 million), in seconds:
[hours] Math::Primality 0.04
-I have not done extensive timing on factoring. The difference in speed for
-most inputs between Math::Factor::XS and Math::Prime::Util is small. For
-some ranges M::F::XS is faster, and some ranges it is slower. Factoring
-random semiprimes is about 1.1x to 6x faster with M::P::U, and some inputs
-are even faster (e.g. C<204518747 * 16476429743>, which is ~50x faster).
+Factoring performance depends on the input, and I'm still tuning it. Compared
+to Math::Factor::XS, it is faster for small numbers, a little slower in
+the 7-9 digit range, and then gets much faster. 14+ digit semiprimes are
+factored 10 - 100x faster.
=head1 AUTHORS
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libmath-prime-util-perl.git
More information about the Pkg-perl-cvs-commits
mailing list