Skip to content

Commit 25bb21b

Browse files
feat(bench): Add @napi-rs/simple-git to benchmarks (#76)
Co-authored-by: seokju-na <seokju.me@toss.im>
1 parent d712cb7 commit 25bb21b

File tree

3 files changed

+179
-6
lines changed

3 files changed

+179
-6
lines changed

benchmarks/index.bench.ts

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import path from 'node:path';
22
import { fileURLToPath } from 'node:url';
3-
import { Repository, Revparse } from 'nodegit';
3+
import { Repository as SimpleGitRepository } from '@napi-rs/simple-git';
4+
import { Repository as NodeGitRepository, Revparse as NodeGitRevparse } from 'nodegit';
45
import { bench, describe } from 'vitest';
56
import { openRepository } from '../index';
67
import { exec } from './util';
@@ -14,7 +15,11 @@ describe('open', () => {
1415
});
1516

1617
bench('nodegit', async () => {
17-
await Repository.open(gitDir);
18+
await NodeGitRepository.open(gitDir);
19+
});
20+
21+
bench('@napi-rs/simple-git', () => {
22+
SimpleGitRepository.init(gitDir);
1823
});
1924
});
2025

@@ -25,8 +30,13 @@ describe('rev-parse', () => {
2530
});
2631

2732
bench('nodegit', async () => {
28-
const repo = await Repository.open(gitDir);
29-
await Revparse.single(repo, 'HEAD');
33+
const repo = await NodeGitRepository.open(gitDir);
34+
await NodeGitRevparse.single(repo, 'HEAD');
35+
});
36+
37+
bench('@napi-rs/simple-git', () => {
38+
const repo = SimpleGitRepository.init(gitDir);
39+
repo.head().resolve();
3040
});
3141

3242
bench('child_process', async () => {
@@ -42,13 +52,20 @@ describe('revwalk', () => {
4252
});
4353

4454
bench('nodegit', async () => {
45-
const repo = await Repository.open(gitDir);
55+
const repo = await NodeGitRepository.open(gitDir);
4656
const revwalk = repo.createRevWalk();
4757
revwalk.pushRange('b597cf0b..d47af3b0');
4858
const oids = await revwalk.fastWalk(200);
4959
console.assert(oids.length === 103);
5060
});
5161

62+
bench('@napi-rs/simple-git', () => {
63+
const repo = SimpleGitRepository.init(gitDir);
64+
const revwalk = repo.revWalk();
65+
const oids = [...revwalk.pushRange('b597cf0b..d47af3b0')];
66+
console.assert(oids.length === 103);
67+
});
68+
5269
bench('child_process', async () => {
5370
await exec('git log b597cf0b..d47af3b0', gitDir);
5471
});
@@ -61,10 +78,15 @@ describe('get commit', () => {
6178
});
6279

6380
bench('nodegit', async () => {
64-
const repo = await Repository.open(gitDir);
81+
const repo = await NodeGitRepository.open(gitDir);
6582
await repo.getCommit('d47af3b02b36834dcde1b60afb64547460f5abc0');
6683
});
6784

85+
bench('@napi-rs/simple-git', () => {
86+
const repo = SimpleGitRepository.init(gitDir);
87+
repo.findCommit('d47af3b02b36834dcde1b60afb64547460f5abc0');
88+
});
89+
6890
bench('child_process', async () => {
6991
await exec('git log d47af3b02b36834dcde1b60afb64547460f5abc0', gitDir);
7092
});

benchmarks/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"bench": "vitest bench --run"
66
},
77
"dependencies": {
8+
"@napi-rs/simple-git": "0.1.19",
89
"nodegit": "link:./nodegit"
910
},
1011
"devDependencies": {

yarn.lock

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1379,6 +1379,155 @@ __metadata:
13791379
languageName: node
13801380
linkType: hard
13811381

1382+
"@napi-rs/simple-git-android-arm-eabi@npm:0.1.19":
1383+
version: 0.1.19
1384+
resolution: "@napi-rs/simple-git-android-arm-eabi@npm:0.1.19"
1385+
conditions: os=android & cpu=arm
1386+
languageName: node
1387+
linkType: hard
1388+
1389+
"@napi-rs/simple-git-android-arm64@npm:0.1.19":
1390+
version: 0.1.19
1391+
resolution: "@napi-rs/simple-git-android-arm64@npm:0.1.19"
1392+
conditions: os=android & cpu=arm64
1393+
languageName: node
1394+
linkType: hard
1395+
1396+
"@napi-rs/simple-git-darwin-arm64@npm:0.1.19":
1397+
version: 0.1.19
1398+
resolution: "@napi-rs/simple-git-darwin-arm64@npm:0.1.19"
1399+
conditions: os=darwin & cpu=arm64
1400+
languageName: node
1401+
linkType: hard
1402+
1403+
"@napi-rs/simple-git-darwin-x64@npm:0.1.19":
1404+
version: 0.1.19
1405+
resolution: "@napi-rs/simple-git-darwin-x64@npm:0.1.19"
1406+
conditions: os=darwin & cpu=x64
1407+
languageName: node
1408+
linkType: hard
1409+
1410+
"@napi-rs/simple-git-freebsd-x64@npm:0.1.19":
1411+
version: 0.1.19
1412+
resolution: "@napi-rs/simple-git-freebsd-x64@npm:0.1.19"
1413+
conditions: os=freebsd & cpu=x64
1414+
languageName: node
1415+
linkType: hard
1416+
1417+
"@napi-rs/simple-git-linux-arm-gnueabihf@npm:0.1.19":
1418+
version: 0.1.19
1419+
resolution: "@napi-rs/simple-git-linux-arm-gnueabihf@npm:0.1.19"
1420+
conditions: os=linux & cpu=arm
1421+
languageName: node
1422+
linkType: hard
1423+
1424+
"@napi-rs/simple-git-linux-arm64-gnu@npm:0.1.19":
1425+
version: 0.1.19
1426+
resolution: "@napi-rs/simple-git-linux-arm64-gnu@npm:0.1.19"
1427+
conditions: os=linux & cpu=arm64 & libc=glibc
1428+
languageName: node
1429+
linkType: hard
1430+
1431+
"@napi-rs/simple-git-linux-arm64-musl@npm:0.1.19":
1432+
version: 0.1.19
1433+
resolution: "@napi-rs/simple-git-linux-arm64-musl@npm:0.1.19"
1434+
conditions: os=linux & cpu=arm64 & libc=musl
1435+
languageName: node
1436+
linkType: hard
1437+
1438+
"@napi-rs/simple-git-linux-powerpc64le-gnu@npm:0.1.19":
1439+
version: 0.1.19
1440+
resolution: "@napi-rs/simple-git-linux-powerpc64le-gnu@npm:0.1.19"
1441+
conditions: os=linux & cpu=powerpc64le & libc=glibc
1442+
languageName: node
1443+
linkType: hard
1444+
1445+
"@napi-rs/simple-git-linux-s390x-gnu@npm:0.1.19":
1446+
version: 0.1.19
1447+
resolution: "@napi-rs/simple-git-linux-s390x-gnu@npm:0.1.19"
1448+
conditions: os=linux & cpu=s390x & libc=glibc
1449+
languageName: node
1450+
linkType: hard
1451+
1452+
"@napi-rs/simple-git-linux-x64-gnu@npm:0.1.19":
1453+
version: 0.1.19
1454+
resolution: "@napi-rs/simple-git-linux-x64-gnu@npm:0.1.19"
1455+
conditions: os=linux & cpu=x64 & libc=glibc
1456+
languageName: node
1457+
linkType: hard
1458+
1459+
"@napi-rs/simple-git-linux-x64-musl@npm:0.1.19":
1460+
version: 0.1.19
1461+
resolution: "@napi-rs/simple-git-linux-x64-musl@npm:0.1.19"
1462+
conditions: os=linux & cpu=x64 & libc=musl
1463+
languageName: node
1464+
linkType: hard
1465+
1466+
"@napi-rs/simple-git-win32-arm64-msvc@npm:0.1.19":
1467+
version: 0.1.19
1468+
resolution: "@napi-rs/simple-git-win32-arm64-msvc@npm:0.1.19"
1469+
conditions: os=win32 & cpu=arm64
1470+
languageName: node
1471+
linkType: hard
1472+
1473+
"@napi-rs/simple-git-win32-x64-msvc@npm:0.1.19":
1474+
version: 0.1.19
1475+
resolution: "@napi-rs/simple-git-win32-x64-msvc@npm:0.1.19"
1476+
conditions: os=win32 & cpu=x64
1477+
languageName: node
1478+
linkType: hard
1479+
1480+
"@napi-rs/simple-git@npm:0.1.19":
1481+
version: 0.1.19
1482+
resolution: "@napi-rs/simple-git@npm:0.1.19"
1483+
dependencies:
1484+
"@napi-rs/simple-git-android-arm-eabi": "npm:0.1.19"
1485+
"@napi-rs/simple-git-android-arm64": "npm:0.1.19"
1486+
"@napi-rs/simple-git-darwin-arm64": "npm:0.1.19"
1487+
"@napi-rs/simple-git-darwin-x64": "npm:0.1.19"
1488+
"@napi-rs/simple-git-freebsd-x64": "npm:0.1.19"
1489+
"@napi-rs/simple-git-linux-arm-gnueabihf": "npm:0.1.19"
1490+
"@napi-rs/simple-git-linux-arm64-gnu": "npm:0.1.19"
1491+
"@napi-rs/simple-git-linux-arm64-musl": "npm:0.1.19"
1492+
"@napi-rs/simple-git-linux-powerpc64le-gnu": "npm:0.1.19"
1493+
"@napi-rs/simple-git-linux-s390x-gnu": "npm:0.1.19"
1494+
"@napi-rs/simple-git-linux-x64-gnu": "npm:0.1.19"
1495+
"@napi-rs/simple-git-linux-x64-musl": "npm:0.1.19"
1496+
"@napi-rs/simple-git-win32-arm64-msvc": "npm:0.1.19"
1497+
"@napi-rs/simple-git-win32-x64-msvc": "npm:0.1.19"
1498+
dependenciesMeta:
1499+
"@napi-rs/simple-git-android-arm-eabi":
1500+
optional: true
1501+
"@napi-rs/simple-git-android-arm64":
1502+
optional: true
1503+
"@napi-rs/simple-git-darwin-arm64":
1504+
optional: true
1505+
"@napi-rs/simple-git-darwin-x64":
1506+
optional: true
1507+
"@napi-rs/simple-git-freebsd-x64":
1508+
optional: true
1509+
"@napi-rs/simple-git-linux-arm-gnueabihf":
1510+
optional: true
1511+
"@napi-rs/simple-git-linux-arm64-gnu":
1512+
optional: true
1513+
"@napi-rs/simple-git-linux-arm64-musl":
1514+
optional: true
1515+
"@napi-rs/simple-git-linux-powerpc64le-gnu":
1516+
optional: true
1517+
"@napi-rs/simple-git-linux-s390x-gnu":
1518+
optional: true
1519+
"@napi-rs/simple-git-linux-x64-gnu":
1520+
optional: true
1521+
"@napi-rs/simple-git-linux-x64-musl":
1522+
optional: true
1523+
"@napi-rs/simple-git-win32-arm64-msvc":
1524+
optional: true
1525+
"@napi-rs/simple-git-win32-x64-msvc":
1526+
optional: true
1527+
checksum: 10c0/b8088c2a21c4f8ce5bee69933c23efba16738eb07b58a44e6c1eac042770f1b6f6687bfc3cb98e8ef5f2dbd29754e37678743fdf5a0e0c3ffcfaef165a86a895
1528+
languageName: node
1529+
linkType: hard
1530+
13821531
"@nodelib/fs.scandir@npm:2.1.5":
13831532
version: 2.1.5
13841533
resolution: "@nodelib/fs.scandir@npm:2.1.5"
@@ -2466,6 +2615,7 @@ __metadata:
24662615
version: 0.0.0-use.local
24672616
resolution: "benchmarks@workspace:benchmarks"
24682617
dependencies:
2618+
"@napi-rs/simple-git": "npm:0.1.19"
24692619
"@types/nodegit": "npm:^0.28.7"
24702620
nodegit: "link:./nodegit"
24712621
vitest: "npm:^3.0.5"

0 commit comments

Comments
 (0)