Ejemplo n.º 1
0
        public void OneByOne(int cnt)
        {
            var lst = new List <GDID>();

            for (var i = 0; i < cnt; i++)
            {
                var gdid = m_Gen.GenerateOneGdid("scopeA", "seqA");
                lst.Add(gdid);
                gdid.See();
                m_Gen.GetSequenceInfos("scopeA").See();
                Conout.WriteLine("--------------------------------------");
                System.Threading.Thread.Sleep(1000);
            }
            Aver.AreEqual(lst.Count, lst.Distinct().Count());
        }
Ejemplo n.º 2
0
        private void _parallelGenerationDifferent()
        {
            const int PASS_CNT = 5000;

            int TOTAL = 0;

            var gen = new GdidGenerator(NOPApplication.Instance);

            gen.AuthorityHosts.Register(new GdidGenerator.AuthorityHost(NOPApplication.Instance, "sync://127.0.0.1:9999"));

            var dict = new Dictionary <string, List <ulong> >();

            dict.Add("aseq", new List <ulong>());
            dict.Add("bseq", new List <ulong>());
            dict.Add("cseq", new List <ulong>());
            dict.Add("dseq", new List <ulong>());
            dict.Add("eseq", new List <ulong>());
            dict.Add("fseq", new List <ulong>());
            dict.Add("gseq", new List <ulong>());


            var rnd = new Random();

            var sw = Stopwatch.StartNew();

            Parallel.For(0, PASS_CNT,
                         (n) =>
            {
                var seq = dict.Keys.ToList()[n % dict.Keys.Count];

                var BATCH   = 32 + rnd.Next(255);         //introduces randomness in threads
                ulong[] arr = new ulong[BATCH];

                for (int i = 0; i < BATCH; i++)
                {
                    arr[i] = gen.GenerateOneGdid("a", seq, 1024).ID;
                }

                lock (dict[seq])
                    foreach (var id in arr)
                    {
                        dict[seq].Add(id);
                    }

                System.Threading.Interlocked.Add(ref TOTAL, BATCH);
            });

            var elapsed = sw.ElapsedMilliseconds;

            foreach (var kvp in dict)
            {
                Aver.AreEqual(kvp.Value.Count, kvp.Value.Distinct().Count());//all values are distinct
                Console.WriteLine("{0} = {1} ids".Args(kvp.Key, kvp.Value.Count));
            }

            Console.WriteLine("Processed {0} in {1} ms. at {2}/sec.".Args(TOTAL, elapsed, TOTAL / (elapsed / 1000d)));
        }
Ejemplo n.º 3
0
        private void btnGenerateOne_Click(object sender, EventArgs e)
        {
            tbOutput.Text = "";

            var sw   = Stopwatch.StartNew();
            var gdid = m_Generator.GenerateOneGdid(tbNamespace.Text, tbSequence.Text, tbManyCount.Text.AsInt(0));

            var elapsedMs = sw.ElapsedTicks / ((double)Stopwatch.Frequency / 1000d);

            tbOutput.AppendText("Elapsed {0:n3}msec".Args(elapsedMs));


            tbOutput.AppendText("{0}\r\n".Args(gdid));
        }
Ejemplo n.º 4
0
        private void _parallelGenerationSame()
        {
            const int PASS_CNT = 5000;

            int TOTAL = 0;

            var gen = new GdidGenerator(NOPApplication.Instance);

            gen.AuthorityHosts.Register(new GdidGenerator.AuthorityHost(NOPApplication.Instance, "sync://127.0.0.1:9999"));

            var lst = new List <ulong>();
            var rnd = new Random();

            var sw = Stopwatch.StartNew();

            Parallel.For(0, PASS_CNT,
                         (_) =>
            {
                var BATCH   = 32 + rnd.Next(255);         //introduces randomness in threads
                ulong[] arr = new ulong[BATCH];

                for (int i = 0; i < BATCH; i++)
                {
                    arr[i] = gen.GenerateOneGdid("a", "aseq", 1024).ID;
                }

                lock (lst)
                    foreach (var id in arr)
                    {
                        lst.Add(id);
                    }

                System.Threading.Interlocked.Add(ref TOTAL, BATCH);
            });

            var elapsed = sw.ElapsedMilliseconds;


            Aver.AreEqual(lst.Count, lst.Distinct().Count());  //all values are distinct

            Console.WriteLine("Processed {0} in {1} ms. at {2}/sec.".Args(TOTAL, elapsed, TOTAL / (elapsed / 1000d)));
        }
Ejemplo n.º 5
0
        static void run(string[] args)
        {
            using (var app = new AzosApplication(args, null))
            {
                var silent = app.CommandArgs["s", "silent"].Exists;
                if (!silent)
                {
                    ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Welcome.txt"));

                    ConsoleUtils.Info("Build information:");
                    Console.WriteLine(" Azos:     " + BuildInformation.ForFramework);
                    Console.WriteLine(" Tool:     " + new BuildInformation(typeof(agm.ProgramBody).Assembly));
                }

                if (app.CommandArgs["?", "h", "help"].Exists)
                {
                    ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Help.txt"));
                    return;
                }

                var authority          = app.CommandArgs.AttrByIndex(0).Value;
                var connectToAuthority = authority.ToResolvedServiceNode(false).ConnectString;
                var scope = app.CommandArgs.AttrByIndex(1).Value;
                var seq   = app.CommandArgs.AttrByIndex(2).Value;
                var bsize = app.CommandArgs.AttrByIndex(3).ValueAsInt(1);

                if (!silent)
                {
                    ConsoleUtils.Info("Authority:  " + authority);
                    ConsoleUtils.Info("Connect to: " + connectToAuthority);
                    ConsoleUtils.Info("Scope:      " + scope);
                    ConsoleUtils.Info("Sequence:   " + seq);
                    ConsoleUtils.Info("Block Size: " + bsize);
                }



                var w = System.Diagnostics.Stopwatch.StartNew();

                var generator = new GdidGenerator(app);
                generator.AuthorityHosts.Register(new GdidGenerator.AuthorityHost(app, connectToAuthority));


                var json = app.CommandArgs["j", "json"].Exists;
                var arr  = app.CommandArgs["array"].Exists;


                if (arr)
                {
                    Console.WriteLine("[");
                }

                for (var i = 0; i < bsize; i++)
                {
                    var    gdid = generator.GenerateOneGdid(scope, seq, bsize - i, noLWM: true);
                    string line;

                    if (json)
                    {
                        line = new
                        {
                            Era       = gdid.Era,
                            ID        = gdid.ID,
                            Authority = gdid.Authority,
                            Counter   = gdid.Counter
                        }
                    }
Ejemplo n.º 6
0
        static void run(string[] args)
        {
            using (var app = new AzosApplication(args, null))
            {
                var silent = app.CommandArgs["s", "silent"].Exists;
                if (!silent)
                {
                    ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Welcome.txt"));

                    ConsoleUtils.Info("Build information:");
                    Console.WriteLine(" Azos:     " + BuildInformation.ForFramework);
                    Console.WriteLine(" Tool:     " + new BuildInformation(typeof(agm.ProgramBody).Assembly));
                }

                if (app.CommandArgs["?", "h", "help"].Exists)
                {
                    ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Help.txt"));
                    return;
                }

                IGdidAuthorityAccessor accessor = null;
                string connectToAuthority       = null;
                var    authority = app.CommandArgs.AttrByIndex(0).Value;

                if (authority.StartsWith("@"))//use accessor instead
                {
                    authority = authority.Remove(0, 1);
                    var cfg = authority.AsLaconicConfig(handling: Data.ConvertErrorHandling.Throw);
                    accessor = FactoryUtils.MakeAndConfigureComponent <IGdidAuthorityAccessor>(app, cfg);
                }
                else
                {
                    connectToAuthority = authority.ToResolvedServiceNode(false).ConnectString;
                }

                var scope = app.CommandArgs.AttrByIndex(1).Value;
                var seq   = app.CommandArgs.AttrByIndex(2).Value;
                var bsize = app.CommandArgs.AttrByIndex(3).ValueAsInt(1);

                if (!silent)
                {
                    ConsoleUtils.Info("Authority:  " + authority);
                    ConsoleUtils.Info(accessor != null ? ("Connect via: {0}" + accessor.GetType().Name) : ("Connect to: {0}" + connectToAuthority));
                    ConsoleUtils.Info("Scope:      " + scope);
                    ConsoleUtils.Info("Sequence:   " + seq);
                    ConsoleUtils.Info("Block Size: " + bsize);
                }



                var w = System.Diagnostics.Stopwatch.StartNew();

                var generator = new GdidGenerator(app, accessor);
                if (connectToAuthority.IsNotNullOrWhiteSpace())
                {
                    generator.AuthorityHosts.Register(new GdidGenerator.AuthorityHost(app, connectToAuthority));
                }


                var json = app.CommandArgs["j", "json"].Exists;
                var arr  = app.CommandArgs["array"].Exists;


                if (arr)
                {
                    Console.WriteLine("[");
                }

                for (var i = 0; i < bsize; i++)
                {
                    var    gdid = generator.GenerateOneGdid(scope, seq, bsize - i, noLWM: true);
                    string line;

                    if (json)
                    {
                        line = new
                        {
                            Era       = gdid.Era,
                            ID        = gdid.ID,
                            Authority = gdid.Authority,
                            Counter   = gdid.Counter
                        }
                    }