private void OnEnable() { testList.Add(new TestUnit("name1", "success")); testList.Add(new TestUnit("qqeqame2", "success")); testList.Add(new TestUnit("name3", "success")); testList.Add(new TestUnit("qeqe", "false")); testList.Add(new TestUnit("name5", "success")); testList.Add(new TestUnit("eqwq", "success")); testList.Add(new TestUnit("name7", "success")); for (int i = 0; i < 100; i++) { testList.Add(new TestUnit("name1", "success")); LogSet.Add(new Tuple <ToolLogType, string>(ToolLogType.Info, "11")); } }
static void Main(string[] args) { int cnt = 10000; int mod = 1000; if (args.Length > 0 && int.TryParse(args[0], out int usercnt)) { cnt = usercnt; } if (args.Length > 1 && int.TryParse(args[1], out int usermod)) { mod = usermod; } var rnd = new Random(); var set = new LogSet <Data>( ".", "test", 100, d => (rnd.Next() % 10), d => (d.Id), d => UTF8.GetBytes(JsonConvert.SerializeObject(d)), bArr => JsonConvert.DeserializeObject <Data>(UTF8.GetString(bArr)), maxFileSize: sizeof(byte) * 2048 * 1000); var data = new Data[cnt]; for (int i = 0; i < cnt; i++) { var d = new Data { DateTime = DateTime.Now, Id = new Guid( BitConverter.GetBytes(rnd.Next() % mod) .Concat(BitConverter.GetBytes(2)) .Concat(BitConverter.GetBytes(2)) .Concat(BitConverter.GetBytes(2)).ToArray()), //Id = Guid.NewGuid(), Num = i, Name = rnd.Next().ToString() }; data[i] = d; } var w = new Stopwatch(); w.Start(); for (int i = 0; i < cnt; i++) { set.Add(data[i]); //set.Remove(data[i]); } w.Stop(); //set = null; //GC.WaitForPendingFinalizers(); //GC.Collect(); Console.WriteLine($"WRITE: {w.ElapsedMilliseconds}ms -> {(double)w.ElapsedMilliseconds / cnt}ms/op -> {cnt / TimeSpan.FromMilliseconds(w.ElapsedMilliseconds).TotalSeconds}ops/sec"); set.Compact(false); w.Restart(); set = new LogSet <Data>( ".", "test", 100, d => (rnd.Next() % 10), d => (d.Id), d => UTF8.GetBytes(JsonConvert.SerializeObject(d)), bArr => JsonConvert.DeserializeObject <Data>(UTF8.GetString(bArr)), true); w.Stop(); //foreach (var item in set) //{ // Console.WriteLine($"{item.DateTime} ; {item.Name} ; {item.Num} ; {item.Id}"); //} Console.WriteLine($"Read {set.Count} in {w.ElapsedMilliseconds}ms -> {(double)w.ElapsedMilliseconds / set.Count}ms/op -> {set.Count / TimeSpan.FromMilliseconds(w.ElapsedMilliseconds).TotalSeconds}ops/sec"); }