test_v.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. var libqqwry = require('../');
  2. var qqwry1 = libqqwry();
  3. var argv = process.argv.slice(2);
  4. var arg = argv[0];
  5. function getQPS(n, s) {
  6. return 'QPS: ' + (n / s).toFixed(1) + 'k';
  7. }
  8. function openspeed() {
  9. qqwry1.speed();
  10. console.log('- 开启speed模式 -');
  11. }
  12. var ips = [],
  13. ipds = [];
  14. //随机生成100个IP
  15. for (var i = 0; i < 100; i++) {
  16. ips.push((Math.random() * 0xffffffff) >>> 0);
  17. }
  18. //随机生成10个IP
  19. for (var i = 0; i < 5; i++) {
  20. var _ip = ips[i];
  21. ipds.push([(Math.random() * _ip) >>> 0, _ip]);
  22. }
  23. if (arg == '-1') {
  24. console.log('--- 效率测试 IP查询(searchIP) ---');
  25. var tb, te, nn;
  26. tb = new Date();
  27. nn = v1(500, qqwry1);
  28. te = new Date();
  29. console.log('单次查询(' + nn / 10000 + '万次):' + (te - tb) + 'ms - ' + getQPS(nn, te - tb));
  30. openspeed();
  31. tb = new Date();
  32. nn = v1(1000, qqwry1);
  33. te = new Date();
  34. console.log('单次查询(' + nn / 10000 + '万次):' + (te - tb) + 'ms - ' + getQPS(nn, te - tb));
  35. } else if (arg == '-2') {
  36. console.log('--- 效率测试 IP段查询(searchIPScope) ---');
  37. var tb, te, n;
  38. tb = new Date();
  39. n = v2(null, qqwry1);
  40. te = new Date();
  41. console.log(
  42. 'IP段查询' +
  43. n[0] +
  44. '次(共获取' +
  45. n[1] / 10000 +
  46. '万条记录):' +
  47. (te - tb) +
  48. 'ms - ' +
  49. getQPS(n[1], te - tb)
  50. );
  51. openspeed();
  52. tb = new Date();
  53. n = v2(null, qqwry1);
  54. te = new Date();
  55. console.log(
  56. 'IP段查询' +
  57. n[0] +
  58. '次(共获取' +
  59. n[1] / 10000 +
  60. '万条记录):' +
  61. (te - tb) +
  62. 'ms - ' +
  63. getQPS(n[1], te - tb)
  64. );
  65. } else if (arg == '-3') {
  66. console.log('--- 效率测试 IP段异步查询(searchIPScope) ---');
  67. var tb, te, n, _mark;
  68. tb = new Date();
  69. // openspeed();
  70. v3(qqwry1)
  71. .then(function(ns) {
  72. te = new Date();
  73. n = ns;
  74. console.log(
  75. 'IP段异步查询(共获取' + n / 10000 + '万条记录):' + (te - tb) + 'ms - ' + getQPS(n, te - tb)
  76. );
  77. })
  78. .then(function() {
  79. openspeed();
  80. tb = new Date();
  81. return v3(qqwry1);
  82. })
  83. .then(function(ns) {
  84. te = new Date();
  85. n = ns;
  86. console.log(
  87. 'IP段异步查询(共获取' + n / 10000 + '万条记录):' + (te - tb) + 'ms - ' + getQPS(n, te - tb)
  88. );
  89. });
  90. } else if (arg) {
  91. //验证是否正常
  92. // qqwry1.speed();
  93. console.log(qqwry1.apply(null, argv));
  94. } else {
  95. qqwry1.speed();
  96. var ips = ['0.0.0.0', '255.255.255.255'];
  97. var time1 = Date.now();
  98. var data = qqwry1.apply(null, ips);
  99. var time2 = Date.now();
  100. var version = data[data.length - 1];
  101. console.log(version.Country + version.Area);
  102. console.log(ips.join(' - ') + ' | 共有数据:' + data.length + '条', '查询耗时:' + (time2 - time1));
  103. console.log(getQPS(data.length, time2 - time1));
  104. return;
  105. }
  106. //单个IP查询
  107. function v1(n, qqwry) {
  108. var nb = 0,
  109. ipsl = ips.length;
  110. for (var i = 0; i < n; i++) {
  111. for (var ii = 0; ii < ipsl; qqwry(ips[ii++]));
  112. nb += ipsl;
  113. }
  114. return nb;
  115. }
  116. //IP段查询
  117. function v2(n, qqwry) {
  118. var nb = 0,
  119. k = n || 1,
  120. ipdsl = ipds.length;
  121. for (var i = 0; i < k; i++) {
  122. for (var ii = 0; ii < ipdsl; ii++) {
  123. nb += qqwry.apply(null, ipds[ii]).length;
  124. }
  125. }
  126. return [k * ipdsl, nb];
  127. }
  128. function v3(qqwry) {
  129. function qqwryIPs(ip, ip1) {
  130. return new Promise(function(reslove, reject) {
  131. qqwry(ip, ip1, function(err, data) {
  132. if (err) return reject(err);
  133. reslove(data);
  134. });
  135. });
  136. }
  137. return Promise.all([
  138. qqwryIPs('0.0.0.0', '50.255.255.255'),
  139. qqwryIPs('51.0.0.0', '99.255.255.255'),
  140. // qqwryIPs('100.0.0.0', '150.255.255.255')
  141. // qqwryIPs('151.0.0.0', '199.255.255.255'),
  142. // qqwryIPs('200.0.0.0', '255.255.255.255'),
  143. ]).then(function(arr) {
  144. return arr.reduce((a, b) => {
  145. return a + b.length;
  146. }, 0);
  147. });
  148. }