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 override ObjectVariants AddIri(string iri) { return(new OV_iriint(coding_table.GetSetCode(iri), coding_table.GetString));; }
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}"); }