mirror of
				https://github.com/TeaOSLab/EdgeCommon.git
				synced 2025-11-04 05:00:24 +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