public override ObjectVariants GetUri(object uri)
 {
     var s = uri as string;
     if (s != null)
     {
         int code = coding_table.GetCode(s);
  
     if (code == -1)
         return new OV_iri(s);
     else return new OV_iriint(code, coding_table.GetString);
     }
     else  if(uri is int)
         return new OV_iriint((int) uri, coding_table.GetString);
     throw new ArgumentException();
 }
Example #2
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 #3
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 #4
0
        public void IntegerSequenceCreateSearch()
        {
            var uniqPath = Path+DateTime.Now.ToString(CultureInfo.InvariantCulture).Replace(":"," ")+DateTime.Now.Millisecond+"/";
            Directory.CreateDirectory(uniqPath);

            nameTable = new NametableLinearBuffered(uniqPath);

            Stopwatch timer = new Stopwatch();
            timer.Start();

            nameTable.Load(NumberOfRecords, Enumerable.Range(0, NumberOfRecords).Select(i => i.ToString()));
            timer.Stop();
            Console.WriteLine(timer.Elapsed.TotalSeconds);
            var random = new Random();
            var r = random.Next(NumberOfRecords);
            timer.Restart();
            nameTable.GetCode(r.ToString());
            timer.Stop();
            Console.WriteLine("search " + r +" "+ timer.Elapsed.TotalMilliseconds);

              //  SearchIntSequence();

            //nameTable.Clear();
            ////nameTable.Load(NumberOfRecords, Enumerable.Empty<string>());

            //nameTable.InsertPortion(Enumerable.Range(0, NumberOfRecords/2).Select(i => i.ToString()));
            //Console.WriteLine("df");
            //nameTable.InsertPortion(Enumerable.Range(NumberOfRecords / 2, NumberOfRecords).Select(i => i.ToString()));
            ////foreach (var s in Enumerable.Range(0, NumberOfRecords).Select(i => i.ToString()))
            //{
            //    nameTable.GetSetCode(s);
            //}

            SearchIntSequence();

            //     nameTable.Clear();

            //   SearchIntSequence();
        }
Example #5
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}");
        }