private static void GoToDefinition(PackageDatabase db, MemberQuery[] searches, int iterations = 1) { PartialArray <Symbol> lastSuccessfulResults = new PartialArray <Symbol>(); PartialArray <Symbol> results = new PartialArray <Symbol>(10); using (new TraceWatch("Go To Definition {0:n0} times across {1:n0} values...", iterations, searches.Length)) { for (int iteration = 0; iteration < iterations; ++iteration) { MemberQuery query = searches[iteration % searches.Length]; query.TryFindMembers(db, ref results); if (results.Count > 0) { results.CopyTo(ref lastSuccessfulResults); } } } if (lastSuccessfulResults.Count > 0) { lastSuccessfulResults[0].WriteLocation(Console.Out); Console.WriteLine(); } else { Console.WriteLine("NOT FOUND."); } Console.WriteLine(); }
public static PartialArray <Symbol> SearchPerformance(IMemberDatabase db, MemberQuery[] searches, int iterations = 1) { PartialArray <Symbol> lastSuccessfulResults = new PartialArray <Symbol>(); PartialArray <Symbol> results = new PartialArray <Symbol>(20); using (new TraceWatch("Searching {0:n0} times across {1:n0} values...", iterations, searches.Length)) { for (int iteration = 0; iteration < iterations; ++iteration) { MemberQuery query = searches[iteration % searches.Length]; query.TryFindMembers(db, ref results); if (results.Count > 0) { results.CopyTo(ref lastSuccessfulResults); } } } if (lastSuccessfulResults.Count > 0) { for (int i = 0; i < Math.Min(lastSuccessfulResults.Count, 5); ++i) { Symbol result = lastSuccessfulResults[i]; int lengthWritten = 0; lengthWritten += result.FullName.WriteTo(Console.Out); Console.Write(new string(' ', Math.Max(1, 60 - lengthWritten))); result.PackageName.WriteTo(Console.Out); Console.WriteLine(); } } else { Console.WriteLine("NOT FOUND."); } Console.WriteLine(); return(results); }