Update benchmark

This commit is contained in:
Iaroslav Postovalov 2020-09-12 18:43:58 +07:00
parent 3b52eb7ac1
commit 3dc59ccd26
No known key found for this signature in database
GPG Key ID: 70D5F4DCB0972F1B
2 changed files with 15 additions and 24 deletions

View File

@ -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")
}
} }

View File

@ -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