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
import com.ionspin.kotlin.bignum.integer.BigInteger
import scientifik.kmath.operations.BigIntField
import scientifik.kmath.operations.JBigIntegerField
import scientifik.kmath.operations.invoke
import kotlin.concurrent.thread
import kotlin.random.Random
@ -9,30 +9,26 @@ import kotlin.system.measureTimeMillis
private class BigIntegerBenchmark {
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() {
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() {
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)
var sum = 0.0
repeat(1000000) {
sum += op(random.nextInt().toLong(), random.nextInt().toLong())
}
println(sum)
var sum = BigIntField.zero
repeat(1000000) { sum += BigIntField { number(random.nextInt()) * random.nextInt() } }
println("bigint:$sum")
}
}
@ -53,9 +49,4 @@ fun main() {
val bigint = measureTimeMillis(benchmark::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 scientifik.kmath.operations.Ring
class BigIntegerRing : Ring<BigInteger> {
object BigIntegerRing : Ring<BigInteger> {
override val zero: BigInteger
get() = BigInteger.ZERO