39 lines
1.7 KiB
Markdown
39 lines
1.7 KiB
Markdown
# IP2Region C# Client
|
|
|
|
## How To Use
|
|
### 1.Install from Nuget. Support .Net Framework (>=4.5) And netstandard 2.0(.net core)
|
|
```powershell
|
|
Install-Package IP2Region
|
|
```
|
|
### 2.Init DbSearcher with [the newest DBFile](https://github.com/lionsoul2014/ip2region/blob/master/data/ip2region.db) Downloaded into your project, and invoke your search methods as below:
|
|
```csharp
|
|
using (var _search = new DbSearcher(Environment.CurrentDirectory + @"\DB\ip2region.db"))
|
|
{
|
|
_search.MemorySearch("183.192.62.65").Region;
|
|
_search.BinarySearch("183.192.62.65").Region;
|
|
_search.BtreeSearch("183.192.62.65").Region;
|
|
}
|
|
```
|
|
For async methods (Methods with the suffix "Async"), just put them with `async` and `await`.
|
|
If you don't need the `SynchronizedContext`, please use `ConfigureAwait(false)`.
|
|
For more about this, please read https://msdn.microsoft.com/en-us/magazine/jj991977.aspx.
|
|
|
|
```csharp
|
|
public async Task SearchAsync_Test()
|
|
{
|
|
// We don't need the synchronizeContext, so just set to false.
|
|
// So as for BinarySearchAsync and BtreeSearchAsync
|
|
var memResult = await _search.MemorySearchAsync("183.192.62.65").ConfigureAwait(false);
|
|
}
|
|
```
|
|
|
|
## Test Result(From /IP2Region.Test.Benchmark)
|
|
Method | Mean | Error | StdDev | Rank |
|
|
------------------- |---------: |----------: |----------: |-----: |
|
|
MemorySearch | 10.66 us | 0.1424 us | 0.1332 us | 1 |
|
|
MemorySearch_Async | 10.90 us | 0.2060 us | 0.2023 us | 2 |
|
|
BinarySearch | 52.22 us | 0.6403 us | 0.5347 us | 5 |
|
|
BinarySearch_Async | 53.03 us | 1.0271 us | 0.9608 us | 6 |
|
|
BtreeSearch | 19.05 us | 0.2464 us | 0.2305 us | 3 |
|
|
BtreeSearch_Async | 19.40 us | 0.3820 us | 0.6690 us | 4 |
|