mirror of https://github.com/AMT-Cheif/drift.git
Benchmark for serial inserts for comparison
This commit is contained in:
parent
60f55c9224
commit
d41097d8e5
|
@ -18,6 +18,7 @@ List<Reportable> allBenchmarks(ScoreEmitter emitter) {
|
|||
SelectStringBenchmark(emitter),
|
||||
// high-level moor apis
|
||||
KeyValueInsertBatch(emitter),
|
||||
KeyValueInsertSerial(emitter),
|
||||
// sql parser
|
||||
ParseMoorFile(emitter),
|
||||
TokenizerBenchmark(emitter),
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:moor/moor.dart';
|
||||
import 'package:moor_ffi/moor_ffi.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
part 'database.g.dart';
|
||||
|
||||
|
@ -13,8 +17,18 @@ class KeyValues extends Table {
|
|||
|
||||
@UseMoor(tables: [KeyValues])
|
||||
class Database extends _$Database {
|
||||
Database() : super(VmDatabase.memory());
|
||||
Database() : super(_obtainExecutor());
|
||||
|
||||
@override
|
||||
int get schemaVersion => 1;
|
||||
}
|
||||
|
||||
final _uuid = Uuid();
|
||||
|
||||
QueryExecutor _obtainExecutor() {
|
||||
final file =
|
||||
File(p.join(Directory.systemTemp.path, 'moor_benchmarks', _uuid.v4()));
|
||||
file.parent.createSync();
|
||||
|
||||
return VmDatabase(file);
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ class KeyValueInsertBatch extends AsyncBenchmarkBase {
|
|||
final Uuid uuid = Uuid();
|
||||
|
||||
KeyValueInsertBatch(ScoreEmitter emitter)
|
||||
: super('Inserting $_size entries', emitter);
|
||||
: super('Inserting $_size entries (batch)', emitter);
|
||||
|
||||
@override
|
||||
Future<void> run() async {
|
||||
|
@ -30,3 +30,25 @@ class KeyValueInsertBatch extends AsyncBenchmarkBase {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
class KeyValueInsertSerial extends AsyncBenchmarkBase {
|
||||
final _db = Database();
|
||||
final Uuid uuid = Uuid();
|
||||
|
||||
KeyValueInsertSerial(ScoreEmitter emitter)
|
||||
: super('Inserting $_size entries (serial)', emitter);
|
||||
|
||||
@override
|
||||
Future<void> run() async {
|
||||
await _db.delete(_db.keyValues).go();
|
||||
|
||||
for (var i = 0; i < _size; i++) {
|
||||
final key = uuid.v4();
|
||||
final value = uuid.v4();
|
||||
|
||||
await _db
|
||||
.into(_db.keyValues)
|
||||
.insert(KeyValuesCompanion.insert(key: key, value: value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ dependencies:
|
|||
benchmark_harness: ^1.0.5
|
||||
intl: ^0.16.0
|
||||
uuid: ^2.0.0
|
||||
path: ^1.6.0
|
||||
dev_dependencies:
|
||||
moor_generator:
|
||||
build_runner:
|
||||
|
|
Loading…
Reference in New Issue