forked from zengzhan/qqzeng-ip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
qqzeng-ip-dat
151 lines (114 loc) · 9.45 KB
/
qqzeng-ip-dat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
高性能IP数据库格式详解 qqzeng-ip.dat
编码:UTF8和GB2312 字节序:Little-Endian
返回多个字段信息(如:亚洲|中国|香港|九龙|油尖旺|新世界电讯|810200|Hong Kong|HK|114.17495|22.327115)
------------------------ 文件结构 3.0 版 -------------------------
//文件头 4字节
[IP段记录]
//前缀区 8字节(4-4) 256*8
[索引区start第几个][索引区end第几个]
//索引区 8字节(4-3-1) ip段行数*8
[结束IP数字][地区流位置][流长度]
//内容区 长度无限制
[地区信息][地区信息]……唯一不重复
------------------------ 文件结构 3.0 版 ---------------------------
优势:压缩形式将数据存储在内存中,通过减少将相同数据读取到内存的次数来减少I/O.
较高的压缩率通过使用更小的内存中空间提高查询性能。
前缀区为作为缩小查询范围,索引区和内容区长度一样,
解析出来一次性加载到数组中,查询性能提高3-5倍!
压缩:原版txt为38.5M,生成dat结构为3.68M 。
和上一版本2.0不同的是索引区去掉了[开始IP数字]4字节,节省多1-2M。
3.0版本只适用[全球版],条件为ip段区间连续且覆盖所有IPV4。
2.0版本适用[全球版][国内版][国外版]
性能:每秒解析1000多万ip (环境:CPU i7-7700K + DDR2400 16G + win10 X64)
创建:qqzeng-ip 于 2018-04-08
------------------------ 文件结构 2.0 版 ---------------------------
//文件头 16字节(4-4-4-4)
[索引区第一条流位置][索引区最后一条流位置][前缀区第一条的流位置][前缀区最后一条的流位置]
//内容区 长度无限制
[地区信息][地区信息]……唯一不重复
//索引区 12字节(4-4-3-1)
[起始IP][结束IP][地区流位置][流长度]
//前缀区 9字节(1-4-4)
[0-255][索引区start索引][索引区end索引]
------------------------ 文件结构 2.0 版 ---------------------------
优势:索引区分为[起始IP][结束IP][地区偏移][长度],减少多级偏移跳转步骤和长度的解析,提高效率;
根据ip第一位数字作为前缀,解析出以这个数字为前缀的第一个索引和最后一个索引,缩小查询区间,
然后在这区间再用二分查找快速查找到对应区间,效率提高几个等级
压缩:原版txt为35M,生成这种dat结构为3.36M
性能:解析900万+ip耗时1秒
对比:相比其他dat更简洁更高效
创建:qqzeng-ip 于 2015-08-08
测试环境:CPU i7-7700K + DDR2400 16G + win10 X64
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 3690万ip->2.262秒 每秒1631.299735万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 9900万ip->5.954秒 每秒1662.747733万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 17820万ip->10.64秒 每秒1674.654638万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 12870万ip->7.689秒 每秒1673.819742万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 18450万ip->11.27秒 每秒1673.165866万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 7380万ip->4.441秒 每秒1661.787886万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 1107万ip->0.670秒 每秒1652.238806万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 135万ip->0.078秒 每秒1730.769231万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 5724万ip->3.398秒 每秒1684.520306万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 4806万ip->2.853秒 每秒1684.542587万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 5913万ip->3.529秒 每秒1675.545480万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 2943万ip->1.751秒 每秒1680.753855万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 1836万ip->1.093秒 每秒1679.780421万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 2673万ip->1.594秒 每秒1676.913425万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 6777万ip->4.026秒 每秒1683.308495万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 252万ip->0.153秒 每秒1647.058824万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 109.8万ip->0.065秒 每秒1689.230769万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 167.4万ip->0.100秒 每秒1674.000000万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 354.6万ip->0.213秒 每秒1664.788732万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 432万ip->0.257秒 每秒1680.933852万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 15.99万ip->0.009秒 每秒1776.666667万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 90.48万ip->0.053秒 每秒1707.169811万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 48.36万ip->0.028秒 每秒1727.142857万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 54.99万ip->0.031秒 每秒1773.870968万次
C 解析 qqzeng-ip-ultimate.dat 【3.0】内存优化版 76.83万ip->0.044秒 每秒1746.136364万次
其他语言 参考
查询 qqzeng-ip.dat 【3.0】内存优化版 3414万ip->3.318秒 每秒1028.93309222423万次
查询 qqzeng-ip.dat 【3.0】内存优化版 4439万ip->4.199秒 每秒1057.1564658252万次
查询 qqzeng-ip.dat 【3.0】内存优化版 4056万ip->3.821秒 每秒1061.50222454855万次
查询 qqzeng-ip.dat 【3.0】内存优化版 1781万ip->1.68秒 每秒1060.11904761905万次
查询 qqzeng-ip.dat 【3.0】内存优化版 3862万ip->3.66秒 每秒1055.1912568306万次
查询 qqzeng-ip.dat 【3.0】内存优化版 3479万ip->3.31秒 每秒1051.05740181269万次
查询 qqzeng-ip.dat 【3.0】内存优化版 2892万ip->2.713秒 每秒1065.97862145227万次
查询 qqzeng-ip.dat 【3.0】内存优化版 3484万ip->3.263秒 每秒1067.72908366534万次
查询 qqzeng-ip.dat 【3.0】内存优化版 2699万ip->2.548秒 每秒1059.26216640502万次
查询 qqzeng-ip.dat 【3.0】内存优化版 2175万ip->2.063秒 每秒1054.28986912264万次
查询 qqzeng-ip.dat 【3.0】内存优化版 42万ip->0.041秒 每秒1024.39024390244万次
查询 qqzeng-ip.dat 【3.0】内存优化版 159万ip->0.152秒 每秒1046.05263157895万次
查询 qqzeng-ip.dat 【3.0】内存优化版 88万ip->0.084秒 每秒1047.61904761905万次
查询 qqzeng-ip.dat 【3.0】内存优化版 123万ip->0.118秒 每秒1042.37288135593万次
查询 qqzeng-ip.dat 【3.0】内存优化版 106万ip->0.101秒 每秒1049.50495049505万次
查询 qqzeng-ip.dat 【3.0】内存优化版 61万ip->0.059秒 每秒1033.89830508475万次
查询 qqzeng-ip.dat 【3.0】内存优化版 177万ip->0.169秒 每秒1047.33727810651万次
查询 qqzeng-ip.dat 【3.0】内存优化版 106万ip->0.101秒 每秒1049.50495049505万次
查询qqzeng-ip.dat 【2.0】内存优化版 1971万ip->2.168秒 每秒909.132841328413万次
查询qqzeng-ip.dat 【2.0】内存优化版 1070万ip->1.127秒 每秒949.423247559894万次
查询qqzeng-ip.dat 【2.0】内存优化版 1392万ip->1.463秒 每秒951.46958304853万次
查询qqzeng-ip.dat 【2.0】内存优化版 933万ip->0.98秒 每秒952.040816326531万次
查询qqzeng-ip.dat 【2.0】内存优化版 1896万ip->1.996秒 每秒949.899799599198万次
查询qqzeng-ip.dat 【2.0】内存优化版 1029万ip->1.123秒 每秒916.295636687444万次
查询qqzeng-ip.dat 【2.0】内存优化版 1684万ip->1.94秒 每秒868.041237113402万次
查询qqzeng-ip.dat 【2.0】内存优化版 740万ip->0.791秒 每秒935.524652338812万次
查询qqzeng-ip.dat 【2.0】内存优化版 863万ip->0.928秒 每秒929.956896551724万次
查询qqzeng-ip.dat 【2.0】内存优化版 633万ip->0.669秒 每秒946.188340807175万次
查询qqzeng-ip.dat 【2.0】内存优化版 908万ip->0.956秒 每秒949.79079497908万次
查询qqzeng-ip.dat 【2.0】内存优化版 1176万ip->1.237秒 每秒950.687146321746万次
查询qqzeng-ip.dat 【2.0】内存优化版 1739万ip->1.833秒 每秒948.717948717949万次
查询qqzeng-ip.dat 【2.0】内存优化版 1147万ip->1.232秒 每秒931.006493506493万次
查询qqzeng-ip.dat 【2.0】内存优化版 1005万ip->1.061秒 每秒947.219604147031万次
查询 qqzeng-ip.dat 【2.0】普通优化版 1464万ip->3.408秒 每秒429.577464788732万次
查询 qqzeng-ip.dat 【2.0】普通优化版 352万ip->0.803秒 每秒438.356164383562万次
查询 qqzeng-ip.dat 【2.0】普通优化版 1357万ip->3.042秒 每秒446.088099934254万次
查询 qqzeng-ip.dat 【2.0】普通优化版 184万ip->0.43秒 每秒427.906976744186万次
查询 qqzeng-ip.dat 【2.0】普通优化版 752万ip->1.697秒 每秒443.134944018857万次
查询 qqzeng-ip.dat 【2.0】普通优化版 1795万ip->4.032秒 每秒445.188492063492万次
查询 qqzeng-ip.dat 【2.0】普通优化版 1823万ip->4.076秒 每秒447.252208047105万次
查询 qqzeng-ip.dat 【2.0】普通优化版 723万ip->1.622秒 每秒445.745992601726万次
查询 qqzeng-ip.dat 【2.0】普通优化版 136万ip->0.319秒 每秒426.332288401254万次
查询 qqzeng-ip.dat 【2.0】普通优化版 334万ip->0.756秒 每秒441.798941798942万次
查询 qqzeng-ip.dat 【2.0】普通优化版 636万ip->1.435秒 每秒443.205574912892万次
查询 qqzeng-ip.dat 【2.0】普通优化版 701万ip->1.578秒 每秒444.233206590621万次
查询 qqzeng-ip.dat 【2.0】普通优化版 1807万ip->4.07秒 每秒443.980343980344万次
查询 qqzeng-ip.dat 【2.0】普通优化版 489万ip->1.105秒 每秒442.533936651584万次