tldts.bench.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { fetchRemoteTextByLine } from './fetch-text-by-line';
  2. import { bench, group, run } from 'mitata';
  3. import * as tldts from 'tldts';
  4. import * as tldtsExperimental from 'tldts-experimental';
  5. (async () => {
  6. const data = await Array.fromAsync(await fetchRemoteTextByLine('https://phishing.army/download/phishing_army_blocklist.txt', true));
  7. const tldtsOpt: Parameters<typeof tldts.getDomain>[1] = {
  8. allowPrivateDomains: false,
  9. extractHostname: false,
  10. validateHostname: false,
  11. detectIp: false,
  12. mixedInputs: false
  13. };
  14. (['getDomain', 'getPublicSuffix', 'getSubdomain', 'parse'] as const).forEach(methodName => {
  15. group(() => {
  16. bench('tldts - ' + methodName, () => {
  17. for (let i = 0, len = data.length; i < len; i++) {
  18. tldts[methodName](data[i], tldtsOpt);
  19. }
  20. });
  21. bench('tldts-experimental - ' + methodName, () => {
  22. for (let i = 0, len = data.length; i < len; i++) {
  23. tldtsExperimental[methodName](data[i], tldtsOpt);
  24. }
  25. });
  26. });
  27. });
  28. return run();
  29. })();