Skip to content

Commit

Permalink
migrate to tinybench
Browse files Browse the repository at this point in the history
  • Loading branch information
toyobayashi committed Apr 16, 2024
1 parent 003851a commit d0a5037
Show file tree
Hide file tree
Showing 11 changed files with 413 additions and 170 deletions.
59 changes: 59 additions & 0 deletions .github/workflows/bench.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Bench

on:
workflow_dispatch:

env:
WASI_VERSION: '21'
WASI_VERSION_FULL: '21.0'
WASI_SDK_PATH: './wasi-sdk-21.0'
EM_VERSION: '3.1.44'
EM_CACHE_FOLDER: 'emsdk-cache'

jobs:
build:
name: Build
runs-on: ubuntu-latest
strategy:
fail-fast: false

steps:
- uses: actions/checkout@v4
- name: Install Ninja
run: |
sudo apt-get update
sudo apt-get install ninja-build
- name: Setup Emscripten cache
id: cache-system-libraries
uses: actions/cache@v3
with:
path: ${{env.EM_CACHE_FOLDER}}
key: ${{env.EM_VERSION}}-${{ runner.os }}-wasm32-unknown-emscripten
- uses: mymindstorm/setup-emsdk@v14
with:
version: ${{ env.EM_VERSION }}
# no-cache: true
actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}

- uses: actions/setup-node@v3
with:
node-version: '20.9.0'
registry-url: 'https://registry.npmjs.org'
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: NPM Install
shell: bash
run: |
npm install -g node-gyp
npm install
- name: NPM Build
shell: bash
run: npm run build --workspaces --if-present

- name: Bench
shell: bash
run: |
npm run rebuild -w packages/bench
npm run start -w packages/bench
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ package-lock.json
out
/script/emnapi.zip
*.tgz
/packages/bench/bench.txt
/packages/bench/build
5 changes: 3 additions & 2 deletions packages/bench/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ add_link_options(
"-sMIN_CHROME_VERSION=84"
"-sALLOW_MEMORY_GROWTH=1"
"-sMODULARIZE=1"
"-sEXPORT_ES6"
)

set(EMNAPI_FIND_NODE_ADDON_API ON)
Expand All @@ -33,13 +34,13 @@ target_link_options(embindcpp PRIVATE "-sEXPORT_NAME=embindcpp")
add_executable(emnapic "${CMAKE_CURRENT_SOURCE_DIR}/src/node-api.cpp")
target_link_libraries(emnapic PRIVATE emnapi-basic)
target_link_options(emnapic PRIVATE
"-sEXPORTED_FUNCTIONS=['_napi_register_wasm_v1','_malloc','_free']"
"-sEXPORTED_FUNCTIONS=['_napi_register_wasm_v1','_node_api_module_get_api_version_v1','_malloc','_free']"
"-sEXPORT_NAME=emnapic"
)

add_executable(emnapicpp "${CMAKE_CURRENT_SOURCE_DIR}/src/node-addon-api.cpp")
target_link_libraries(emnapicpp PRIVATE emnapi-basic)
target_link_options(emnapicpp PRIVATE
"-sEXPORTED_FUNCTIONS=['_napi_register_wasm_v1','_malloc','_free']"
"-sEXPORTED_FUNCTIONS=['_napi_register_wasm_v1','_node_api_module_get_api_version_v1','_malloc','_free']"
"-sEXPORT_NAME=emnapicpp"
)
19 changes: 19 additions & 0 deletions packages/bench/binding.gyp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"targets": [
{
"target_name": "napi",
"sources": [
"src/node-api.cpp"
]
},
{
"target_name": "naa",
"sources": [
"src/node-addon-api.cpp"
],
"dependencies": [
"<!(node -p \"require('node-addon-api').targets\"):node_addon_api",
]
}
]
}
17 changes: 9 additions & 8 deletions packages/bench/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,19 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test</title>
<script type="importmap">
{
"imports": {
"@emnapi/runtime": "../runtime/dist/emnapi.mjs",
"tinybench": "../../node_modules/tinybench/dist/index.js"
}
}
</script>
</head>
<body>
<div>
<button id="testNapi">test napi</button>
</div>
<script src="../../node_modules/lodash/lodash.min.js"></script>
<script src="../../node_modules/platform/platform.js"></script>
<script src="../../node_modules/benchmark/benchmark.js"></script>
<script src="../runtime/dist/emnapi.js"></script>
<script src="./.build/Release/embindcpp.js"></script>
<script src="./.build/Release/emnapic.js"></script>
<script src="./.build/Release/emnapicpp.js"></script>
<script src="./index.js"></script>
<script src="./index.js" type="module"></script>
</body>
</html>
Loading

0 comments on commit d0a5037

Please sign in to comment.