Skip to content

Commit

Permalink
test: add benchmark and update test
Browse files Browse the repository at this point in the history
  • Loading branch information
xusd320 committed Jul 16, 2024
1 parent a92182b commit 21f2201
Show file tree
Hide file tree
Showing 9 changed files with 233 additions and 2 deletions.
Binary file modified .yarn/install-state.gz
Binary file not shown.
9 changes: 9 additions & 0 deletions benchmark/benchmark.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import cheerio from "./cheerio.mjs";
import niddle from "./niddle.mjs";

async function main() {
await niddle();
await cheerio();
}

main();
26 changes: 26 additions & 0 deletions benchmark/cheerio.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { load } from "cheerio";
import benchmark from "htmlparser-benchmark";

export default function cheerio() {
return new Promise((res) => {
var bench = benchmark(function (html, callback) {
const $ = load(html);
$.html();
callback();
});

bench.on("progress", function (key) {
// console.log('finished parsing ' + key + '.html');
});

bench.on("result", function (stat) {
console.log(
"cheerio :" +
stat.mean().toPrecision(6) +
" ms/file ± " +
stat.sd().toPrecision(6),
);
res();
});
});
}
26 changes: 26 additions & 0 deletions benchmark/niddle.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import * as niddle from "../index.js";
import benchmark from "htmlparser-benchmark";

export default function cheerio() {
return new Promise((res) => {
var bench = benchmark(function (html, callback) {
const $ = niddle.parse(html);
$.outerHtml();
callback();
});

bench.on("progress", function (key) {
// console.log('finished parsing ' + key + '.html');
});

bench.on("result", function (stat) {
console.log(
"niddle :" +
stat.mean().toPrecision(6) +
" ms/file ± " +
stat.sd().toPrecision(6),
);
res();
});
});
}
7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
"devDependencies": {
"@napi-rs/cli": "^2.18.4",
"ava": "^6.0.1",
"cheerio": "^1.0.0-rc.12",
"htmlparser-benchmark": "^1.1.3",
"js-beautify": "^1.15.1"
},
"ava": {
Expand All @@ -48,9 +50,10 @@
"build": "napi build --platform --release",
"build:debug": "napi build --platform",
"prepublishOnly": "napi prepublish -t npm",
"test": "ava",
"universal": "napi universal",
"version": "napi version"
"version": "napi version",
"test": "ava",
"benchmark": "node ./benchmark/benchmark.mjs"
},
"repository": "https://github.com/niddle-rs/niddle",
"packageManager": "yarn@4.3.1",
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
167 changes: 167 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,13 @@ __metadata:
languageName: node
linkType: hard

"async@npm:0.2.x":
version: 0.2.10
resolution: "async@npm:0.2.10"
checksum: 10c0/714d284dc6c3ae59f3e8b347083e32c7657ba4ffc4ff945eb152ad4fb08def27e768992fcd4d9fd3b411c6b42f1541862ac917446bf2a1acfa0f302d1001f7d2
languageName: node
linkType: hard

"ava@npm:^6.0.1":
version: 6.1.3
resolution: "ava@npm:6.1.3"
Expand Down Expand Up @@ -339,6 +346,13 @@ __metadata:
languageName: node
linkType: hard

"boolbase@npm:^1.0.0":
version: 1.0.0
resolution: "boolbase@npm:1.0.0"
checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf
languageName: node
linkType: hard

"brace-expansion@npm:^1.1.7":
version: 1.1.11
resolution: "brace-expansion@npm:1.1.11"
Expand Down Expand Up @@ -390,6 +404,35 @@ __metadata:
languageName: node
linkType: hard

"cheerio-select@npm:^2.1.0":
version: 2.1.0
resolution: "cheerio-select@npm:2.1.0"
dependencies:
boolbase: "npm:^1.0.0"
css-select: "npm:^5.1.0"
css-what: "npm:^6.1.0"
domelementtype: "npm:^2.3.0"
domhandler: "npm:^5.0.3"
domutils: "npm:^3.0.1"
checksum: 10c0/2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282
languageName: node
linkType: hard

"cheerio@npm:^1.0.0-rc.12":
version: 1.0.0-rc.12
resolution: "cheerio@npm:1.0.0-rc.12"
dependencies:
cheerio-select: "npm:^2.1.0"
dom-serializer: "npm:^2.0.0"
domhandler: "npm:^5.0.3"
domutils: "npm:^3.0.1"
htmlparser2: "npm:^8.0.1"
parse5: "npm:^7.0.0"
parse5-htmlparser2-tree-adapter: "npm:^7.0.0"
checksum: 10c0/c85d2f2461e3f024345b78e0bb16ad8e41492356210470dd1e7d5a91391da9fcf6c0a7cb48a9ba8820330153f0cedb4d0a60c7af15d96ecdb3092299b9d9c0cc
languageName: node
linkType: hard

"chownr@npm:^2.0.0":
version: 2.0.0
resolution: "chownr@npm:2.0.0"
Expand Down Expand Up @@ -545,6 +588,26 @@ __metadata:
languageName: node
linkType: hard

"css-select@npm:^5.1.0":
version: 5.1.0
resolution: "css-select@npm:5.1.0"
dependencies:
boolbase: "npm:^1.0.0"
css-what: "npm:^6.1.0"
domhandler: "npm:^5.0.2"
domutils: "npm:^3.0.1"
nth-check: "npm:^2.0.1"
checksum: 10c0/551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500
languageName: node
linkType: hard

"css-what@npm:^6.1.0":
version: 6.1.0
resolution: "css-what@npm:6.1.0"
checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746
languageName: node
linkType: hard

"currently-unhandled@npm:^0.4.1":
version: 0.4.1
resolution: "currently-unhandled@npm:0.4.1"
Expand Down Expand Up @@ -589,6 +652,44 @@ __metadata:
languageName: node
linkType: hard

"dom-serializer@npm:^2.0.0":
version: 2.0.0
resolution: "dom-serializer@npm:2.0.0"
dependencies:
domelementtype: "npm:^2.3.0"
domhandler: "npm:^5.0.2"
entities: "npm:^4.2.0"
checksum: 10c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2
languageName: node
linkType: hard

"domelementtype@npm:^2.3.0":
version: 2.3.0
resolution: "domelementtype@npm:2.3.0"
checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9
languageName: node
linkType: hard

"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3":
version: 5.0.3
resolution: "domhandler@npm:5.0.3"
dependencies:
domelementtype: "npm:^2.3.0"
checksum: 10c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a
languageName: node
linkType: hard

"domutils@npm:^3.0.1":
version: 3.1.0
resolution: "domutils@npm:3.1.0"
dependencies:
dom-serializer: "npm:^2.0.0"
domelementtype: "npm:^2.3.0"
domhandler: "npm:^5.0.3"
checksum: 10c0/342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887
languageName: node
linkType: hard

"eastasianwidth@npm:^0.2.0":
version: 0.2.0
resolution: "eastasianwidth@npm:0.2.0"
Expand Down Expand Up @@ -638,6 +739,13 @@ __metadata:
languageName: node
linkType: hard

"entities@npm:^4.2.0, entities@npm:^4.4.0":
version: 4.5.0
resolution: "entities@npm:4.5.0"
checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250
languageName: node
linkType: hard

"escalade@npm:^3.1.1":
version: 3.1.2
resolution: "escalade@npm:3.1.2"
Expand Down Expand Up @@ -868,6 +976,28 @@ __metadata:
languageName: node
linkType: hard

"htmlparser-benchmark@npm:^1.1.3":
version: 1.1.3
resolution: "htmlparser-benchmark@npm:1.1.3"
dependencies:
async: "npm:0.2.x"
summary: "npm:0.3.x"
checksum: 10c0/bdec6755c27f2eb1c9e64d79cc0bb974733368f8ba39ef08c988e179e32b644dde21623948a5b8fc1ac6e1298e27356cd5320d89009badf1cd8092d54e0aa5d5
languageName: node
linkType: hard

"htmlparser2@npm:^8.0.1":
version: 8.0.2
resolution: "htmlparser2@npm:8.0.2"
dependencies:
domelementtype: "npm:^2.3.0"
domhandler: "npm:^5.0.3"
domutils: "npm:^3.0.1"
entities: "npm:^4.4.0"
checksum: 10c0/609cca85886d0bf2c9a5db8c6926a89f3764596877492e2caa7a25a789af4065bc6ee2cdc81807fe6b1d03a87bf8a373b5a754528a4cc05146b713c20575aab4
languageName: node
linkType: hard

"https-proxy-agent@npm:^5.0.0":
version: 5.0.1
resolution: "https-proxy-agent@npm:5.0.1"
Expand Down Expand Up @@ -1228,6 +1358,8 @@ __metadata:
dependencies:
"@napi-rs/cli": "npm:^2.18.4"
ava: "npm:^6.0.1"
cheerio: "npm:^1.0.0-rc.12"
htmlparser-benchmark: "npm:^1.1.3"
js-beautify: "npm:^1.15.1"
languageName: unknown
linkType: soft
Expand Down Expand Up @@ -1298,6 +1430,15 @@ __metadata:
languageName: node
linkType: hard

"nth-check@npm:^2.0.1":
version: 2.1.1
resolution: "nth-check@npm:2.1.1"
dependencies:
boolbase: "npm:^1.0.0"
checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479
languageName: node
linkType: hard

"object-assign@npm:^4.1.1":
version: 4.1.1
resolution: "object-assign@npm:4.1.1"
Expand Down Expand Up @@ -1345,6 +1486,25 @@ __metadata:
languageName: node
linkType: hard

"parse5-htmlparser2-tree-adapter@npm:^7.0.0":
version: 7.0.0
resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0"
dependencies:
domhandler: "npm:^5.0.2"
parse5: "npm:^7.0.0"
checksum: 10c0/e820cacb8486e6f7ede403327d18480df086d70e32ede2f6654d8c3a8b4b8dc4a4d5c21c03c18a92ba2466c513b93ca63be4a138dd73cd0995f384eb3b9edf11
languageName: node
linkType: hard

"parse5@npm:^7.0.0":
version: 7.1.2
resolution: "parse5@npm:7.1.2"
dependencies:
entities: "npm:^4.4.0"
checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4
languageName: node
linkType: hard

"path-is-absolute@npm:^1.0.0":
version: 1.0.1
resolution: "path-is-absolute@npm:1.0.1"
Expand Down Expand Up @@ -1647,6 +1807,13 @@ __metadata:
languageName: node
linkType: hard

"summary@npm:0.3.x":
version: 0.3.2
resolution: "summary@npm:0.3.2"
checksum: 10c0/1dff74a38089d7580a0fdaaf3aedce0e617f44510358b5be1de3e091f61fc00b384445545ed962b3523774e5c65991c10584eb72f73c17ec6c850a8c6405169c
languageName: node
linkType: hard

"supertap@npm:^3.0.1":
version: 3.0.1
resolution: "supertap@npm:3.0.1"
Expand Down

0 comments on commit 21f2201

Please sign in to comment.