blob: f3ecaba0f4099845c9b6d4a672149032000cf544 [file] [log] [blame]
// See file LICENSE for more information.
library benchmark.api.ufixnum_benchmark;
import 'dart:typed_data';
import 'package:pointycastle/src/ufixnum.dart';
import '../benchmark/operation_benchmark.dart';
void main() {
_benchmarkSum();
_benchmarkUnpack();
}
void _benchmarkSum() {
final x8 = 0xFF;
final y8 = 0x80;
final x32 = 0xFF00FF00;
final y32 = 0x80808080;
final x64 = 0xFF00FF00FF00FF00;
final y64 = 0x8080808080808080;
final dx = 0xFF00FF00.toDouble();
final dy = 0x08080808.toDouble();
final rx64 = Register64(0xFF00FF00, 0xFF00FF00);
final ry64 = Register64(0x80808080, 0x80808080);
final bix = BigInt.parse('FF00FF00', radix: 16);
final biy = BigInt.parse('08080808', radix: 16);
OperationBenchmark('sum | smi ', () => x32 + y32).report();
OperationBenchmark('sum | double', () => dx + dy).report();
OperationBenchmark('sum | sum8 ', () => sum8(x8, y8)).report();
OperationBenchmark('sum | sum32 ', () => sum32(x32, y32)).report();
OperationBenchmark('sum | Reg64 ', () => rx64.sum(ry64)).report();
OperationBenchmark('sum | bigint', () => x64 + y64).report();
OperationBenchmark('sum | bignum', () => bix + biy).report();
}
void _benchmarkUnpack() {
var bytes = Uint8List(8);
var view = ByteData.view(bytes.buffer);
var r64 = Register64();
OperationBenchmark('unpack | ByteData ', () {
view.getUint32(0, Endian.little);
}).report();
OperationBenchmark('unpack | unpack32(ByteData) ', () {
unpack32(view, 0, Endian.little);
}).report();
OperationBenchmark('unpack | unpack32(Uint8List)', () {
unpack32(bytes, 0, Endian.little);
}).report();
OperationBenchmark('unpack | unpack64(ByteData) ', () {
r64.unpack(view, 0, Endian.little);
}).report();
OperationBenchmark('unpack | unpack64(Uint8List)', () {
r64.unpack(bytes, 0, Endian.little);
}).report();
}