添加readme.md说明文件

This commit is contained in:
mohong 2016-10-20 15:19:07 +08:00
parent 97e0bb8374
commit 0755357474
3 changed files with 64 additions and 16 deletions

60
binding/golang/README.md Normal file
View File

@ -0,0 +1,60 @@
golang 实现ip地址查询
获取
```
go get github.com/mohong122/ip2region/binding/golang
```
使用
```golang
package main
import (
"fmt"
"github.com/mohong122/ip2region/binding/golang"
)
func main() {
fmt.Println("err")
region, err := ip2region.New("ip2region.db")
defer region.Close()
if err != nil {
fmt.Println(err)
return
}
ip, err := region.MemorySearch("127.0.0.1")
fmt.Println(ip, err)
ip, err = region.BinarySearch("127.0.0.1")
fmt.Println(ip, err)
ip, err = region.BtreeSearch("127.0.0.1")
fmt.Println(ip, err)
}
```
返回对象
```golang
type IpInfo struct {
CityId int64
Country string
Region string
Province string
City string
ISP string
}
```
性能
|名称|次数|平均耗时|
|---|---|------|
BenchmarkBtreeSearch-4| 200000 | 7715 ns/op
BenchmarkMemorySearch-4| 2000000 | 840 ns/op
BenchmarkBinarySearch-4| 30000 | 42680 ns/op

View File

@ -110,7 +110,7 @@ func (this *Ip2Region) MemorySearch(ipStr string) (ipInfo IpInfo, err error) {
var dataPtr, l int64;
for (l <= h) {
m := l + h >> 1
m := (l + h) >> 1
p := this.firstIndexPtr + m * INDEX_BLOCK_LENGTH
sip := getLong(this.dbBinStr, p)
if ip < sip {

View File

@ -4,25 +4,13 @@ import (
"testing"
)
func TestGetLong(t *testing.T) {
//region, err := New("../../../data/ip2region.db ")
//if err != nil {
// t.Error(err)
//}
//region.BtreeSearch("222.46.20.201")
//region.MemorySearch("222.46.20.201")
//getLong([]byte("abcd"), 0)
}
func BenchmarkBtreeSearch(B *testing.B) {
region, err := New("../../data/ip2region.db ")
if err != nil {
B.Error(err)
}
for i:=0;i<B.N;i++{
region.BtreeSearch("222.46.20.201")
region.BtreeSearch("127.0.0.1")
}
}
@ -33,7 +21,7 @@ func BenchmarkMemorySearch(B *testing.B) {
B.Error(err)
}
for i:=0;i<B.N;i++{
region.MemorySearch("251.1.12.1")
region.MemorySearch("127.0.0.1")
}
}
@ -44,7 +32,7 @@ func BenchmarkBinarySearch(B *testing.B) {
B.Error(err)
}
for i:=0;i<B.N;i++{
region.BinarySearch("222.46.20.201")
region.BinarySearch("127.0.0.1")
}
}