forked from kscience/kmath
Update benchmark
This commit is contained in:
parent
3b52eb7ac1
commit
3dc59ccd26
@ -1,7 +1,7 @@
|
|||||||
package scientifik.kmath.bignum
|
package scientifik.kmath.bignum
|
||||||
|
|
||||||
import com.ionspin.kotlin.bignum.integer.BigInteger
|
|
||||||
import scientifik.kmath.operations.BigIntField
|
import scientifik.kmath.operations.BigIntField
|
||||||
|
import scientifik.kmath.operations.JBigIntegerField
|
||||||
import scientifik.kmath.operations.invoke
|
import scientifik.kmath.operations.invoke
|
||||||
import kotlin.concurrent.thread
|
import kotlin.concurrent.thread
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
@ -9,30 +9,26 @@ import kotlin.system.measureTimeMillis
|
|||||||
|
|
||||||
private class BigIntegerBenchmark {
|
private class BigIntegerBenchmark {
|
||||||
fun java() {
|
fun java() {
|
||||||
invokeAndSum { l, l2 -> (l.toBigInteger() * l2.toBigInteger()).toLong() }
|
val random = Random(0)
|
||||||
|
var sum = JBigIntegerField.zero
|
||||||
|
repeat(1000000) {
|
||||||
|
sum += JBigIntegerField { number(random.nextInt()) * random.nextInt() }
|
||||||
|
}
|
||||||
|
println("java:$sum")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun bignum() {
|
fun bignum() {
|
||||||
invokeAndSum { l, l2 -> (BigInteger.fromLong(l) * BigInteger.fromLong(l2)).longValue() }
|
val random = Random(0)
|
||||||
|
var sum = BigIntegerRing.zero
|
||||||
|
repeat(1000000) { sum += BigIntegerRing { number(random.nextInt()) * random.nextInt() } }
|
||||||
|
println("bignum:$sum")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun bigint() {
|
fun bigint() {
|
||||||
invokeAndSum { l, l2 -> BigIntField { number(l) * number(l2) }.toString().toLong() }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun long() {
|
|
||||||
invokeAndSum { l, l2 -> l * l2 }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun invokeAndSum(op: (Long, Long) -> Long) {
|
|
||||||
val random = Random(0)
|
val random = Random(0)
|
||||||
var sum = 0.0
|
var sum = BigIntField.zero
|
||||||
|
repeat(1000000) { sum += BigIntField { number(random.nextInt()) * random.nextInt() } }
|
||||||
repeat(1000000) {
|
println("bigint:$sum")
|
||||||
sum += op(random.nextInt().toLong(), random.nextInt().toLong())
|
|
||||||
}
|
|
||||||
|
|
||||||
println(sum)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,9 +49,4 @@ fun main() {
|
|||||||
val bigint = measureTimeMillis(benchmark::bigint)
|
val bigint = measureTimeMillis(benchmark::bigint)
|
||||||
println("bigint=$bigint")
|
println("bigint=$bigint")
|
||||||
}
|
}
|
||||||
|
|
||||||
thread {
|
|
||||||
val long = measureTimeMillis(benchmark::long)
|
|
||||||
println("long=$long")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ package scientifik.kmath.bignum
|
|||||||
import com.ionspin.kotlin.bignum.integer.BigInteger
|
import com.ionspin.kotlin.bignum.integer.BigInteger
|
||||||
import scientifik.kmath.operations.Ring
|
import scientifik.kmath.operations.Ring
|
||||||
|
|
||||||
class BigIntegerRing : Ring<BigInteger> {
|
object BigIntegerRing : Ring<BigInteger> {
|
||||||
override val zero: BigInteger
|
override val zero: BigInteger
|
||||||
get() = BigInteger.ZERO
|
get() = BigInteger.ZERO
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user