mirror of
https://github.com/kou029w/_.git
synced 2025-01-31 22:38:06 +00:00
0f19ff4d97
Bumps [semver](https://github.com/npm/node-semver) from 7.3.7 to 7.5.4. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v7.3.7...v7.5.4) --- updated-dependencies: - dependency-name: semver dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> |
||
---|---|---|
.. | ||
hello-world.esmo.ts | ||
hello-world.esno.ts | ||
hello-world.ts | ||
hello-world.tsm.ts | ||
hello-world.tsx.ts | ||
package.json | ||
README.md | ||
yarn.lock |
何をしたかったか
lukeed/tsm と esbuild-kit/esno と esbuild-kit/tsx の比較
環境:
- Node v17.9.0
- GitHub Codespaces 4-core/8GB RAM/32GB
サンプルコード:
#!/usr/bin/env tsm
// dummy
import "typescript";
const message: string = "hello world";
console.log(message);
#!/usr/bin/env esno
// dummy
import "typescript";
const message: string = "hello world";
console.log(message);
#!/usr/bin/env esmo
// dummy
import "typescript";
const message: string = "hello world";
console.log(message);
#!/usr/bin/env tsx
// dummy
import "typescript";
const message: string = "hello world";
console.log(message);
// dummy
import "typescript";
const message: string = "hello world";
console.log(message);
time npx --call 'bash -c "for i in {1..10}; do ./hello-world.tsm.ts > /dev/null 2>&1; done"'
time npx --call 'bash -c "for i in {1..10}; do ./hello-world.esno.ts > /dev/null 2>&1; done"'
time npx --call 'bash -c "for i in {1..10}; do ./hello-world.esmo.ts > /dev/null 2>&1; done"'
time npx --call 'bash -c "for i in {1..10}; do ./hello-world.tsx.ts > /dev/null 2>&1; done"'
time npx --call 'bash -c "for i in {1..10}; do node -r tsm hello-world.ts > /dev/null 2>&1; done"'
time npx --call 'bash -c "for i in {1..10}; do node --loader tsm hello-world.ts > /dev/null 2>&1; done"'
time npx --call 'bash -c "for i in {1..10}; do node --loader tsx hello-world.ts > /dev/null 2>&1; done"'
time npx --call 'bash -c "for i in {1..10}; do node -r esbuild-register hello-world.ts > /dev/null 2>&1; done"'
結果
サイズ: esno のほうが、依存関係が多いのでややサイズ大きいが esbuild 本体に比べれば誤差程度
パフォーマンス: tsm のほうがパフォーマンス高い
$ time npx --call 'bash -c "for i in {1..10}; do ./hello-world.tsm.ts > /dev/null 2>&1; done"'
real 0m4.848s
user 0m4.608s
sys 0m0.695s
$ time npx --call 'bash -c "for i in {1..10}; do ./hello-world.esno.ts > /dev/null 2>&1; done"'
real 0m5.261s
user 0m4.765s
sys 0m0.856s
$ time npx --call 'bash -c "for i in {1..10}; do ./hello-world.esmo.ts > /dev/null 2>&1; done"'
real 0m6.468s
user 0m6.321s
sys 0m0.964s
$ time npx --call 'bash -c "for i in {1..10}; do ./hello-world.tsx.ts > /dev/null 2>&1; done"'
real 0m10.406s
user 0m9.108s
sys 0m2.192s
$ time npx --call 'bash -c "for i in {1..10}; do node -r tsm hello-world.ts > /dev/null 2>&1; done"'
real 0m3.804s
user 0m3.430s
sys 0m0.513s
$ time npx --call 'bash -c "for i in {1..10}; do node --loader tsm hello-world.ts > /dev/null 2>&1; done"'
real 0m4.162s
user 0m3.971s
sys 0m0.683s
$ time npx --call 'bash -c "for i in {1..10}; do node --loader tsx hello-world.ts > /dev/null 2>&1; done"'
real 0m9.209s
user 0m8.049s
sys 0m2.035s
$ time npx --call 'bash -c "for i in {1..10}; do node -r esbuild-register hello-world.ts > /dev/null 2>&1; done"'
real 0m4.422s
user 0m4.113s
sys 0m0.694s
感想
ここまで見た範囲では tsm 優位か