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(); }
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"); }
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++; } } }
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(); }
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}"); }