public void Wrapper() { var rulesSet = Path.Combine(TestDir, "analyzer", "rules.txt"); var storage = Path.Combine(TestDir, "analyzer", "storage.data"); var ids = AcKunosContent.GetKunosCarIds(AcRoot).ToArray(); var wrapper = RulesWrapper.FromFile(AcRoot, rulesSet, storage, ids); wrapper.EnsureActual(); var d = ids.Where(x => Directory.Exists(FileUtils.GetCarDirectory(AcRoot, x))) .Select(x => new { Id = x, Data = DataWrapper.FromCarDirectory(AcRoot, x) }) .ToList(); var w = Stopwatch.StartNew(); var j = 0; foreach (var car in d) { foreach (var s in wrapper.FindSimular(car.Data, "aero", false, 0.85)) { AcToolsLogging.Write($"{car.Id} is similar to {s.CarId} by {s.Value * 100:F1}%"); j++; } } AcToolsLogging.Write($"Check time: {w.Elapsed.TotalMilliseconds / j:F2} ms"); }
public static RulesWrapper GetRules([CanBeNull] string[] additionalDonorIds) { var root = AcRootDirectory.Instance.RequireValue; return(new RulesWrapper(root, BinaryResources.Rules, FilesStorage.Instance.GetTemporaryFilename("Cars.data"), additionalDonorIds == null ? AcKunosContent.GetKunosCarIds(root).ToArray() : AcKunosContent.GetKunosCarIds(root).Union(additionalDonorIds).ToArray())); }