OpenJDK / jdk8u / jdk8u / jdk
changeset 8925:c138b0d33980
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
author | bpb |
---|---|
date | Tue, 03 Dec 2013 12:25:32 -0800 |
parents | cd4aabc40f72 |
children | 3e95aadb479f |
files | src/share/classes/java/math/BigInteger.java |
diffstat | 1 files changed, 6 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/java/math/BigInteger.java Tue Dec 03 11:52:18 2013 -0800 +++ b/src/share/classes/java/math/BigInteger.java Tue Dec 03 12:25:32 2013 -0800 @@ -215,7 +215,7 @@ * 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 @@ * 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 @@ * 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 @@ * 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 @@ * 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 @@ * 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