Class ComplexPerformance
- java.lang.Object
-
- org.apache.commons.numbers.examples.jmh.complex.ComplexPerformance
-
- Direct Known Subclasses:
ComplexPerformance_jmhType_B1
public class ComplexPerformance extends Object
Executes a benchmark to measure the speed of operations in theComplex
class.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ComplexPerformance.ComplexAndRealNumbers
Contains an array of complex numbers and an array of real numbers.static class
ComplexPerformance.ComplexNumbers
Contains an array of complex numbers.static class
ComplexPerformance.ComplexNumberSize
Contains the size of numbers.static class
ComplexPerformance.TwoComplexNumbers
Contains two arrays of complex numbers.
-
Constructor Summary
Constructors Constructor Description ComplexPerformance()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
abs(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
absMathHypot(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
This test demonstrates that theMath.hypot(double, double)
method is not as fast as the custom implementation in abs().void
acos(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
acosh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
add(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
addReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
arg(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
asin(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
asinh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
atan(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
atanh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
baselineCopy(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
Baseline the creation of a copy complex number.void
baselineIdentity(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
Baseline the JMH overhead for the loop execute to consume Complex objects.void
conj(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
conj2(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
Explicit benchmark without using a method reference.void
cos(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
cosh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
divide(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
divideReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
exp(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
imag(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
isFinite(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
isInfinite(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
isNaN(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
log(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
log10(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
multiply(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
multiplyReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
negate(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
norm(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
pow(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
powReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
proj(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
real(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
real2(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
Explicit benchmark without using a method reference.void
sin(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
sinh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
sqrt(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
sqrtNorm(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
This test demonstrates that the method used in abs() is not as fast as using square root of the norm.void
subtract(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
subtractReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
tan(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
void
tanh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
-
-
Method Detail
-
real2
public void real2(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
Explicit benchmark without using a method reference. This should run in the same time asreal(ComplexNumbers, Blackhole)
. This is commented out as it exists for reference purposes.- Parameters:
numbers
- Numbers.bh
- Data sink.
-
conj2
public void conj2(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
Explicit benchmark without using a method reference. This should run in the same time asconj(ComplexNumbers, Blackhole)
. This is commented out as it exists for reference purposes.- Parameters:
numbers
- Numbers.bh
- Data sink.
-
baselineIdentity
public void baselineIdentity(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
Baseline the JMH overhead for the loop execute to consume Complex objects.- Parameters:
numbers
- Numbers.bh
- Data sink.
-
baselineCopy
public void baselineCopy(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
Baseline the creation of a copy complex number. This measures the overhead of creation of new complex numbers including field access to the real and imaginary parts.- Parameters:
numbers
- Numbers.bh
- Data sink.
-
isNaN
public void isNaN(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
isInfinite
public void isInfinite(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
isFinite
public void isFinite(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
real
public void real(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
imag
public void imag(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
abs
public void abs(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
arg
public void arg(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
norm
public void norm(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
sqrtNorm
public void sqrtNorm(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
This test demonstrates that the method used in abs() is not as fast as using square root of the norm. The C99 standard for the abs() function requires over/underflow protection in the intermediate computation and infinity edge case handling. This has a performance overhead.- Parameters:
numbers
- Numbers.bh
- Data sink.
-
absMathHypot
public void absMathHypot(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
This test demonstrates that theMath.hypot(double, double)
method is not as fast as the custom implementation in abs().- Parameters:
numbers
- Numbers.bh
- Data sink.
-
conj
public void conj(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
negate
public void negate(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
proj
public void proj(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
cos
public void cos(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
cosh
public void cosh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
exp
public void exp(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
log
public void log(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
log10
public void log10(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
sin
public void sin(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
sinh
public void sinh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
sqrt
public void sqrt(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
tan
public void tan(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
tanh
public void tanh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
acos
public void acos(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
acosh
public void acosh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
asin
public void asin(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
asinh
public void asinh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
atan
public void atan(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
atanh
public void atanh(ComplexPerformance.ComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
pow
public void pow(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
multiply
public void multiply(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
divide
public void divide(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
add
public void add(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
subtract
public void subtract(ComplexPerformance.TwoComplexNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
powReal
public void powReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
multiplyReal
public void multiplyReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
divideReal
public void divideReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
addReal
public void addReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
subtractReal
public void subtractReal(ComplexPerformance.ComplexAndRealNumbers numbers, org.openjdk.jmh.infra.Blackhole bh)
-
-