Comments (5)
Done.
https://github.com/loynoir/git-bench/blob/main/bench.txt
from nodegit.
Any idea why simple-git is so much faster than execa than execFile? Effectively it should be about the same, albeit of course spawning a process will always be slower than a native library. Also isomorphic.. I guess the first time V8 JIT compiler will take a lot of time, but it's still consistently slower over many calls?
Also anyone ever tried to compile canonical git using emscripten to webassembly? I wonder how that one compares in benchmarks.
from nodegit.
You remind me to test whether /tmp
is tmpfs, and found devcontainer /tmp
is not tmpfs.
Now I
- Add code to ensure BENCH_REPO is under
/tmp
and/tmp
is tmpfs - Change BENCH_COUNT from 100 to 10000
- Unfortunately, after devcontainer rebuild and system update,
isomorphic-git
encounter bug 1163, and remove from bench
https://github.com/loynoir/git-bench/blob/733d6b7c7b3bae9f5655396b023e2889b302a4ae/bench.txt#L1-L8
Seems simpleGit
is still a bit faster.
Have not look into simpleGit
code, I guess raw git command parse config every time, and simpleGit
somehow cache config.
Just a reminder, if you want to use simpleGit
, simpleGit_show()
return string if I remember correctly, the other XXX_show()
return Buffer.
from nodegit.
Also anyone ever tried to compile canonical git using emscripten to webassembly? I wonder how that one compares in benchmarks.
I have found a wasm version of libgit2, though not the canonical git.
I have not yet examined it closely, but I feel it is promising.
https://github.com/petersalomonsen/wasm-git
from nodegit.
Out of some reason, isogit is not looking for the commit object in the pack file, this "fixes" it as workaround in berry:
mv .git/objects/pack/pack-5594355c4b021332ab59e14ea79d5c46bf10ec68.pack .
git unpack-objects < pack-5594355c4b021332ab59e14ea79d5c46bf10ec68.pack
of course not a really fix, but it can run the test:
┌─────────┬──────────────────────┬────────────────────┬────────────────────┐
│ (index) │ Task Name │ Average Time (ps) │ Variance (ps) │
├─────────┼──────────────────────┼────────────────────┼────────────────────┤
│ 0 │ 'nodegit_show' │ 14269.009348071486 │ 1375.234011865769 │
│ 1 │ 'isomorphicGit_show' │ 48132.35018748002 │ 20944.06588460185 │
│ 2 │ 'simpleGit_show' │ 33357.35877334451 │ 5235.988108480814 │
│ 3 │ 'execFile_show' │ 32022.69114060595 │ 15853.465081924764 │
│ 4 │ 'execa_show' │ 30753.440147191515 │ 2675.103913497697 │
└─────────┴──────────────────────┴────────────────────┴────────────────────┘
But also not reassuring for production use, considering no one there can actually fix it.
PS: I tried to compile canonical git with emscripten.. it compiles, and kinda works, but also doesnt with lots of tiny and issues due to the file system simulation, but eventually guess it was a stupid idea, because it's forced to use sync io and there is no way around that.
from nodegit.
Related Issues (20)
- Cannot join slack HOT 3
- https://www.nodegit.org/ out of date
- undefined symbol: SSL_get_peer_certificate HOT 6
- Memory corruption in index handling HOT 2
- Cannot join slack ISSUE HOT 2
- Can we use v0.28.0-alpha.21 version in our production app HOT 8
- "undefined symbol: gcry_control" after building in linux/amd64 alpine
- How to check count of changed files to avoid empty commits HOT 1
- [Question] When can we reach version `0.28.0`? Are there any road blockers? HOT 2
- should publish a version which fix vulnerabilities to npm under `lastest` tag
- Prebuilt Binaries for node 18? HOT 5
- Archive this repo please HOT 6
- Building for Node 18 needs libssl-dev and libkrb5-dev to allow building libgit2 from source HOT 2
- error loading plugin
- conflictGet docs has wrong return type
- Blame always returns the same time HOT 1
- Does not work in Docker container based on node:slim HOT 2
- S3 AWS Missing HOT 9
- Fetch never ask for credentials HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nodegit.