示例#1
0
 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");
        }