|
|
|
|
@ -1,14 +1,16 @@ |
|
|
|
|
// See https://aka.ms/new-console-template for more information |
|
|
|
|
|
|
|
|
|
using System.ComponentModel; |
|
|
|
|
using MongoDB.Bson; |
|
|
|
|
using realm_cli; |
|
|
|
|
using Realms; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Realm GetDB() |
|
|
|
|
{ |
|
|
|
|
var cfg = new RealmConfiguration("c:/prjs/realm_test.db"); |
|
|
|
|
cfg.SchemaVersion = 2; |
|
|
|
|
var cfg = new RealmConfiguration("d:/realm_test.db"); |
|
|
|
|
cfg.SchemaVersion = 4; |
|
|
|
|
Realm.Compact(cfg); |
|
|
|
|
return Realm.GetInstance(cfg); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -29,31 +31,89 @@ void PropChanged(object arg, PropertyChangedEventArgs e) |
|
|
|
|
async Task InsertLiveData() |
|
|
|
|
{ |
|
|
|
|
var b = DateTime.Now; |
|
|
|
|
for (var i = 0; i != 10; ++i) |
|
|
|
|
{ |
|
|
|
|
var item = new LiveData() {ItemId = i, EcuId = 0, Val = new Random().NextSingle()*i}; |
|
|
|
|
//for (var i = 0; i != 100; ++i) |
|
|
|
|
//{ |
|
|
|
|
// var item = new LiveData() {ItemId = i, EcuId = 0, Val = new Random().NextSingle()*i}; |
|
|
|
|
//item.PropertyChanged += PropChanged; |
|
|
|
|
item.ItemId = i; |
|
|
|
|
item.ValueLabel = item.Val.ToString(); |
|
|
|
|
var db = GetDB(); |
|
|
|
|
await db.WriteAsync((realm => |
|
|
|
|
// item.ItemId = i; |
|
|
|
|
// item.ValueLabel = item.Val.ToString(); |
|
|
|
|
using (var db = GetDB()) |
|
|
|
|
{ |
|
|
|
|
realm.Add(item); |
|
|
|
|
})); |
|
|
|
|
await db.WriteAsync((realm => |
|
|
|
|
{ |
|
|
|
|
for (var i = 0; i != 10000; ++i) |
|
|
|
|
{ |
|
|
|
|
var item = new LiveData() {ItemId = i, EcuId = 0, Val = new Random().NextSingle()*i}; |
|
|
|
|
//item.PropertyChanged += PropChanged; |
|
|
|
|
item.ItemId = i; |
|
|
|
|
item.ValueLabel = $"{i}-test"; |
|
|
|
|
item.DisplayValue = item.Val.ToString(); |
|
|
|
|
realm.Add(item); |
|
|
|
|
} |
|
|
|
|
})); |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
Console.WriteLine($"insert needs {(DateTime.Now - b).TotalSeconds} secs"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
async Task QueryLiveData() |
|
|
|
|
async Task<LiveData> QueryLiveData() |
|
|
|
|
{ |
|
|
|
|
var b = DateTime.Now; |
|
|
|
|
for (var i = 0; i != 100; ++i) |
|
|
|
|
for (var i = 1; i != 2; ++i) |
|
|
|
|
{ |
|
|
|
|
var db = GetDB(); |
|
|
|
|
var cs = db.All<LiveData>().Where(i1 => i1.ItemId == i); |
|
|
|
|
Console.WriteLine(cs.FirstOrDefault()); |
|
|
|
|
var cs = db.All<LiveData>().FirstOrDefault(i1 => i1.ItemId == i); |
|
|
|
|
Console.WriteLine($"original {cs}"); |
|
|
|
|
var ccs = BsonTools.Clone(cs); |
|
|
|
|
return ccs; |
|
|
|
|
//Console.WriteLine(cs.FirstOrDefault()); |
|
|
|
|
} |
|
|
|
|
Console.WriteLine($"{(DateTime.Now - b).TotalSeconds} secs"); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
await InsertLiveData(); |
|
|
|
|
var copy_obj = await QueryLiveData(); |
|
|
|
|
copy_obj.Id = ObjectId.GenerateNewId().ToString(); |
|
|
|
|
var tempId = copy_obj.Id; |
|
|
|
|
using (var db = GetDB()) |
|
|
|
|
{ |
|
|
|
|
db.Write(() => |
|
|
|
|
{ |
|
|
|
|
db.Add(copy_obj, update:true); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
db.Write(() => |
|
|
|
|
{ |
|
|
|
|
var item = db.All<LiveData>().FirstOrDefault(i => i.Id == tempId); |
|
|
|
|
Console.WriteLine($"ready for updated {item}"); |
|
|
|
|
item.DisplayValue = "update"; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
/* |
|
|
|
|
using (var db = GetDB()) |
|
|
|
|
{ |
|
|
|
|
db.Write(() => |
|
|
|
|
{ |
|
|
|
|
db.RemoveAll<LiveData>(); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
/* |
|
|
|
|
using (var db = GetDB()) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
Console.WriteLine("after updated---------------------------"); |
|
|
|
|
var b = DateTime.Now; |
|
|
|
|
var item = db.All<LiveData>().FirstOrDefault(i => i.Id == tempId); |
|
|
|
|
for (var i = 0; i != 2000000; ++i) |
|
|
|
|
{ |
|
|
|
|
BsonTools.Clone(item); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
Console.WriteLine($"clone needs {(DateTime.Now - b).TotalSeconds}"); |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
//await InsertLiveData(); |
|
|
|
|
await QueryLiveData(); |
|
|
|
|
|