Example #1
0
        public static void TestNameTable(INametable nt)
        {
            System.Diagnostics.Stopwatch T = new System.Diagnostics.Stopwatch();
            Random rnd    = new Random();
            string prefix = "PupkinQQUTEUJSHJDHJGFHSGDHWTYTHXCGHGCHSHSDYSTDSHSGHSG_";

            int max   = 1_000_000;
            int total = 7 * max;

            T.Restart();
            for (int i = 0; i < total; i++)
            {
                string scode = prefix + rnd.Next(max);
                var    code  = nt.GetSetCode(scode);
            }
            T.Stop();
            Console.WriteLine($" get set {total} codes for new strings time {T.ElapsedMilliseconds}. Nametable Count={nt.LongCount()}");


            int nprobes = 1_000_000;

            T.Restart();
            int unknown = 0;

            for (int j = 0; j < nprobes; j++)
            {
                string scode = prefix + rnd.Next(max);
                int    code  = nt.GetCode(scode);
                if (code == Int32.MinValue)
                {
                    unknown++;
                }
            }
            T.Stop();
            Console.WriteLine($" get {nprobes} codes. time {T.ElapsedMilliseconds}. {unknown} are unknown");

            T.Restart();
            unknown = 0;
            int maxcode = (int)nt.LongCount() * 11 / 10; // лишние для тестирования отсутствующих кодов

            for (int j = 0; j < nprobes; j++)
            {
                int    code  = rnd.Next(maxcode);
                string scode = nt.GetString(code);
                if (scode == null)
                {
                    unknown++;
                }
            }
            T.Stop();
            Console.WriteLine($" get {nprobes} string from codes. time {T.ElapsedMilliseconds}. {unknown} are unknown");
        }
Example #2
0
        public void TestNameTable()
        {
            Random        rnd    = new Random();
            string        prefix = "PupkinQQUTEUJSHJDHJGFHSGDHWTYTHXCGHGCHSHSDYSTDSHSGHSG_";
            int           max    = 1_000_000;
            int           total  = 7 * max;
            List <string> names  = Enumerable.Range(0, total).Select(i => prefix + rnd.Next(max)).ToList();
            List <int>    codes  = new List <int>();

            total++;
            names.Add(string.Empty);

            for (int i = 0; i < total; i++)
            {
                string scode = prefix + rnd.Next(max);
                var    code  = _magnt.GetSetCode(scode);
            }

            int nprobes = 1_000_000;

            int unknown = 0;

            for (int j = 0; j < nprobes; j++)
            {
                string scode = prefix + rnd.Next(max);
                int    code  = _magnt.GetCode(scode);
                if (code == Int32.MinValue)
                {
                    unknown++;
                }
            }
            unknown = 0;
            int maxcode = (int)_magnt.LongCount() * 11 / 10; // лишние для тестирования отсутствующих кодов

            for (int j = 0; j < nprobes; j++)
            {
                int    code  = rnd.Next(maxcode);
                string scode = _magnt.GetString(code);
                if (scode == null)
                {
                    unknown++;
                }
            }
        }
Example #3
0
 public override ObjectVariants AddIri(string iri)
 {
     return(new OV_iriint(coding_table.GetSetCode(iri), coding_table.GetString));;
 }
Example #4
0
        static void TestNameTable(INametable nt)
        {
            // int startCapacity=1000*1000;
            int allCount = 10 * 1000 * 1000;//startCapacity+1000;//1001000
            //int firstPortionSize = 1000;
            //int portionSize = 100*1000;
            //int portionsCount = 10;
            int lastPortionAddByGetset = allCount;//1000;

            var allStrings = new List <string>(allCount);

            List <string> RandomStringsList(int count)
            {
                return(Enumerable.Repeat(0, count).Select(i => Guid.NewGuid().ToString())
                       .ToList());
            }

            var newstrings = RandomStringsList(lastPortionAddByGetset);

            allStrings.AddRange(newstrings);
            T.Restart();
            foreach (var newstring in newstrings)
            {
                var code = nt.GetSetCode(newstring);
            }
            T.Stop();
            Console.WriteLine($" get set {newstrings.Count} codes for new strings time {T.ElapsedMilliseconds}");


            //get code test
            int getCodeCalls          = 1000 * 1000;
            var randomExistingStrings = Enumerable.Range(0, getCodeCalls)
                                        .Select(j => Random.Next(getCodeCalls))
                                        .Select(randomI => allStrings[randomI])
                                        .ToList();

            T.Restart();
            for (int j = 0; j < getCodeCalls; j++)
            {
                nt.GetCode(randomExistingStrings[j]);
            }
            T.Stop();
            Console.WriteLine($" get {getCodeCalls} existing codes time {T.ElapsedMilliseconds}");

            var randomNotExistingStrings = RandomStringsList(getCodeCalls);

            T.Restart();
            for (int j = 0; j < getCodeCalls; j++)
            {
                nt.GetCode(randomNotExistingStrings[j]);
            }
            T.Stop();
            Console.WriteLine($" get {getCodeCalls} not existing codes time {T.ElapsedMilliseconds}");


            //get string test
            //int getStringCalls = 1000 * 1000;
            var randomExistingCodes = Enumerable.Range(0, getCodeCalls)
                                      .Select(j => Random.Next(getCodeCalls))
                                      .Select(randomI => allStrings[randomI])
                                      .Select(nt.GetCode)
                                      .ToList();

            T.Restart();
            for (int j = 0; j < getCodeCalls; j++)
            {
                nt.GetCode(randomExistingStrings[j]);
            }
            T.Stop();
            Console.WriteLine($" get {getCodeCalls} existing strings time {T.ElapsedMilliseconds}");
        }