From 97014e17b356cb01087e9b5cad69ed55df144a06 Mon Sep 17 00:00:00 2001 From: bpb Date: Tue, 3 Dec 2013 12:25:32 -0800 Subject: [PATCH] 8022181: Tune algorithm crossover thresholds in BigInteger Summary: Change multiplication, squaring, division, and base conversion thresholds to values which retain performance improvement in most cases but with a a lower overall risk of regression. Reviewed-by: darcy --- src/share/classes/java/math/BigInteger.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/share/classes/java/math/BigInteger.java b/src/share/classes/java/math/BigInteger.java index 5fab74432..33a999c47 100644 --- a/src/share/classes/java/math/BigInteger.java +++ b/src/share/classes/java/math/BigInteger.java @@ -215,7 +215,7 @@ public class BigInteger extends Number implements Comparable { * Karatsuba multiplication will be used. This value is found * experimentally to work well. */ - private static final int KARATSUBA_THRESHOLD = 50; + private static final int KARATSUBA_THRESHOLD = 80; /** * The threshold value for using 3-way Toom-Cook multiplication. @@ -224,7 +224,7 @@ public class BigInteger extends Number implements Comparable { * the mag arrays is greater than this threshold, then Toom-Cook * multiplication will be used. */ - private static final int TOOM_COOK_THRESHOLD = 75; + private static final int TOOM_COOK_THRESHOLD = 240; /** * The threshold value for using Karatsuba squaring. If the number @@ -232,7 +232,7 @@ public class BigInteger extends Number implements Comparable { * Karatsuba squaring will be used. This value is found * experimentally to work well. */ - private static final int KARATSUBA_SQUARE_THRESHOLD = 90; + private static final int KARATSUBA_SQUARE_THRESHOLD = 128; /** * The threshold value for using Toom-Cook squaring. If the number @@ -240,7 +240,7 @@ public class BigInteger extends Number implements Comparable { * Toom-Cook squaring will be used. This value is found * experimentally to work well. */ - private static final int TOOM_COOK_SQUARE_THRESHOLD = 140; + private static final int TOOM_COOK_SQUARE_THRESHOLD = 216; /** * The threshold value for using Burnikel-Ziegler division. If the number @@ -248,7 +248,7 @@ public class BigInteger extends Number implements Comparable { * Burnikel-Ziegler division will be used. This value is found * experimentally to work well. */ - static final int BURNIKEL_ZIEGLER_THRESHOLD = 50; + static final int BURNIKEL_ZIEGLER_THRESHOLD = 80; /** * The threshold value for using Schoenhage recursive base conversion. If @@ -258,7 +258,7 @@ public class BigInteger extends Number implements Comparable { * relatively flat for thresholds between 2-25, so this choice may be * varied within this range for very small effect. */ - private static final int SCHOENHAGE_BASE_CONVERSION_THRESHOLD = 8; + private static final int SCHOENHAGE_BASE_CONVERSION_THRESHOLD = 20; //Constructors -- GitLab