mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-03 12:20:27 +08:00
优化IP库GC性能
This commit is contained in:
@@ -20,8 +20,8 @@ type Reader struct {
|
||||
|
||||
regionMap map[string]*ipRegion // 缓存重复的区域用来节约内存
|
||||
|
||||
ipV4Items []*ipv4Item
|
||||
ipV6Items []*ipv6Item
|
||||
ipV4Items []ipv4Item
|
||||
ipV6Items []ipv6Item
|
||||
|
||||
lastIPFrom uint64
|
||||
lastCountryId uint16
|
||||
@@ -162,11 +162,11 @@ func (this *Reader) Meta() *Meta {
|
||||
return this.meta
|
||||
}
|
||||
|
||||
func (this *Reader) IPv4Items() []*ipv4Item {
|
||||
func (this *Reader) IPv4Items() []ipv4Item {
|
||||
return this.ipV4Items
|
||||
}
|
||||
|
||||
func (this *Reader) IPv6Items() []*ipv6Item {
|
||||
func (this *Reader) IPv6Items() []ipv6Item {
|
||||
return this.ipV6Items
|
||||
}
|
||||
|
||||
@@ -296,13 +296,13 @@ func (this *Reader) parseLine(line []byte) error {
|
||||
}
|
||||
|
||||
if version == "4" {
|
||||
this.ipV4Items = append(this.ipV4Items, &ipv4Item{
|
||||
this.ipV4Items = append(this.ipV4Items, ipv4Item{
|
||||
IPFrom: uint32(ipFrom),
|
||||
IPTo: uint32(ipTo),
|
||||
Region: region,
|
||||
})
|
||||
} else {
|
||||
this.ipV6Items = append(this.ipV6Items, &ipv6Item{
|
||||
this.ipV6Items = append(this.ipV6Items, ipv6Item{
|
||||
IPFrom: ipFrom,
|
||||
IPTo: ipTo,
|
||||
Region: region,
|
||||
|
||||
@@ -215,8 +215,12 @@ func (this *QueryResult) realCountryId() uint16 {
|
||||
switch item := this.item.(type) {
|
||||
case *ipv4Item:
|
||||
return item.Region.CountryId
|
||||
case ipv4Item:
|
||||
return item.Region.CountryId
|
||||
case *ipv6Item:
|
||||
return item.Region.CountryId
|
||||
case ipv6Item:
|
||||
return item.Region.CountryId
|
||||
}
|
||||
|
||||
}
|
||||
@@ -228,8 +232,12 @@ func (this *QueryResult) realProvinceId() uint16 {
|
||||
switch item := this.item.(type) {
|
||||
case *ipv4Item:
|
||||
return item.Region.ProvinceId
|
||||
case ipv4Item:
|
||||
return item.Region.ProvinceId
|
||||
case *ipv6Item:
|
||||
return item.Region.ProvinceId
|
||||
case ipv6Item:
|
||||
return item.Region.ProvinceId
|
||||
}
|
||||
|
||||
}
|
||||
@@ -241,8 +249,12 @@ func (this *QueryResult) realCityId() uint32 {
|
||||
switch item := this.item.(type) {
|
||||
case *ipv4Item:
|
||||
return item.Region.CityId
|
||||
case ipv4Item:
|
||||
return item.Region.CityId
|
||||
case *ipv6Item:
|
||||
return item.Region.CityId
|
||||
case ipv6Item:
|
||||
return item.Region.CityId
|
||||
}
|
||||
|
||||
}
|
||||
@@ -254,8 +266,12 @@ func (this *QueryResult) realTownId() uint32 {
|
||||
switch item := this.item.(type) {
|
||||
case *ipv4Item:
|
||||
return item.Region.TownId
|
||||
case ipv4Item:
|
||||
return item.Region.TownId
|
||||
case *ipv6Item:
|
||||
return item.Region.TownId
|
||||
case ipv6Item:
|
||||
return item.Region.TownId
|
||||
}
|
||||
|
||||
}
|
||||
@@ -267,8 +283,12 @@ func (this *QueryResult) realProviderId() uint16 {
|
||||
switch item := this.item.(type) {
|
||||
case *ipv4Item:
|
||||
return item.Region.ProviderId
|
||||
case ipv4Item:
|
||||
return item.Region.ProviderId
|
||||
case *ipv6Item:
|
||||
return item.Region.ProviderId
|
||||
case ipv6Item:
|
||||
return item.Region.ProviderId
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user