private double Harness(ICacheManager cm, int TaskCount, int MaxItems, int GetCount)
        {
            var srg = new SimpleRandomGenerator();

            for (var i = 0; i < MaxItems; i++)
            {
                var f = new Foo();

                f.Name   = srg.Generate(new RandomGeneratorSetting(RandomCodeType.Alpha, 300));
                f.Size   = SafeClrConvert.ToInt32(new RandomGeneratorSetting(RandomCodeType.Num, 3));
                f.Price  = SafeClrConvert.ToInt32(new RandomGeneratorSetting(RandomCodeType.Num, 5));
                f.Exists = SafeClrConvert.ToInt32(new RandomGeneratorSetting(RandomCodeType.Num, 2)) % 2 == 0;

                cm.Add("item" + i, f);
            }

            var tasks = new Task[TaskCount];
            var rnd   = new Random();

            for (var i = 0; i < TaskCount; i++)
            {
                tasks[i] = new Task((c) =>
                {
                    var _c = c as ICacheManager;

                    if (_c != null)
                    {
                        for (var j = 0; j < GetCount; j++)
                        {
                            var x = _c.Get("item" + rnd.Next(0, MaxItems));

                            consume(x);

                            Thread.Yield();
                        }
                    }
                }, cm);
            }
            var sw = new Stopwatch();

            sw.Start();
            for (var i = 0; i < TaskCount; i++)
            {
                tasks[i].Start();
            }

            Task.WaitAll(tasks);
            sw.Stop();

            return(sw.ElapsedMilliseconds);
        }
Example #2
0
        public override void Test()
        {
            var srg  = new SimpleRandomGenerator();
            var rgs  = new RandomGeneratorSetting(RandomCodeType.AlphaNum, 8);
            var data = new List <string>();

            for (var i = 0; i < 20; i++)
            {
                var x = srg.Generate(rgs);
                data.Add(x);
            }

            foreach (var code in data)
            {
                System.Console.WriteLine(code);
            }
        }