public void StreamDataSourceSearch() { Helper.PrintMem(); var dest = Path.Combine(AppContext.BaseDirectory, "ip.dat"); if (!File.Exists(dest)) { var filename = Path.Combine(AppContext.BaseDirectory, "ip.txt"); using (var fs = File.Create(dest)) { IpSearcherFactory.Generate(Helper.GetIPList(filename).ToArray(), fs); } } var dataSource = new StreamDataSource(dest); var searcher = IpSearcherFactory.GetSearcher(dataSource); //预热 searcher.Search(IpLocationHelper.IPv4ToInteger("14.123.238.167")); uint ip = IpLocationHelper.IPv4ToInteger("116.19.114.15"); Helper.Time("单条查询", () => { searcher.Search(ip); }); int count = 20000; Helper.Time("批量查询", () => { searcher.Search(ip); }, count); Helper.TimeWithParallel("并发查询", () => { searcher.Search(ip); }, count); Helper.TimeWithThread("多线程查询", () => { searcher.Search(ip); }, 4, count); }
public void Check_ALL_Match() { var filename = Path.Combine(AppContext.BaseDirectory, "ip.txt"); var dest = Path.Combine(AppContext.BaseDirectory, "ip2.dat"); var data = Helper.GetIPList(filename).ToArray(); using (var fs = File.Create(dest)) { IpSearcherFactory.Generate(Helper.GetIPList(filename).ToArray(), fs); } var dataSource = new MemoryDataSource(dest); var searcher = IpSearcherFactory.GetSearcher(dataSource); IpLocation result; foreach (var info in data) { result = searcher.Search(info.MinIP); if (info.Country != result.Country) { var a = 123; } Assert.Equal(info.Country, result.Country ?? string.Empty); //Assert.Equal(info.Province, result.Province ?? string.Empty); //Assert.Equal(info.City, result.City ?? string.Empty); //if (info.Isp == "内网IP") //{ // Assert.Equal("保留地址", result.Isp ?? string.Empty); //} //else //{ // Assert.Equal(info.Isp, result.Isp ?? string.Empty); //} } dataSource.Dispose(); }
public void Writer_And_Reader() { var filename = Path.Combine(AppContext.BaseDirectory, "ip.txt"); var dest = Path.Combine(AppContext.BaseDirectory, "ip.dat"); using (var fs = File.Create(dest)) { IpSearcherFactory.Generate(Helper.GetIPList(filename).ToArray(), fs); } var dataSource = new StreamDataSource(dest); var searcher = IpSearcherFactory.GetSearcher(dataSource); var result = searcher.Search(IpLocationHelper.IPv4ToInteger("14.123.238.167")); Assert.NotNull(result); Assert.Equal("广东省", result.Province); dataSource.Dispose(); }