From df52524292691a57d64bb6895d2ebbb484bec936 Mon Sep 17 00:00:00 2001 From: Bo Yao Date: Tue, 7 Feb 2023 16:11:14 +0800 Subject: [PATCH 01/10] add first three gas benchmarks --- bench/.gitignore | 1 + bench/README.md | 91 ++++++++++++++ .../test-highlevel-collection.ava.js | 71 +++++++++++ bench/__tests__/test-highlevel-minimal.ava.js | 50 ++++++++ bench/__tests__/test-lowlevel-api.ava.js | 50 ++++++++ bench/__tests__/test-lowlevel-minimal.ava.js | 50 ++++++++ bench/__tests__/util.js | 31 +++++ bench/ava.config.cjs | 8 ++ bench/example-outcome.json | 116 ++++++++++++++++++ bench/jsconfig.json | 6 + bench/package.json | 30 +++++ bench/res/highlevel_minimal.wasm | Bin 0 -> 163586 bytes bench/res/lowlevel_api.wasm | Bin 0 -> 387 bytes bench/res/lowlevel_minimal.wasm | Bin 0 -> 219 bytes bench/src/highlevel-collection.js | 13 ++ bench/src/highlevel-minimal.js | 7 ++ bench/src/lowlevel-api.js | 6 + bench/src/lowlevel-minimal.js | 3 + bench/tsconfig.json | 9 ++ pnpm-lock.yaml | 15 +++ pnpm-workspace.yaml | 1 + 21 files changed, 558 insertions(+) create mode 100644 bench/.gitignore create mode 100644 bench/README.md create mode 100644 bench/__tests__/test-highlevel-collection.ava.js create mode 100644 bench/__tests__/test-highlevel-minimal.ava.js create mode 100644 bench/__tests__/test-lowlevel-api.ava.js create mode 100644 bench/__tests__/test-lowlevel-minimal.ava.js create mode 100644 bench/__tests__/util.js create mode 100644 bench/ava.config.cjs create mode 100644 bench/example-outcome.json create mode 100644 bench/jsconfig.json create mode 100644 bench/package.json create mode 100755 bench/res/highlevel_minimal.wasm create mode 100755 bench/res/lowlevel_api.wasm create mode 100755 bench/res/lowlevel_minimal.wasm create mode 100644 bench/src/highlevel-collection.js create mode 100644 bench/src/highlevel-minimal.js create mode 100644 bench/src/lowlevel-api.js create mode 100644 bench/src/lowlevel-minimal.js create mode 100644 bench/tsconfig.json diff --git a/bench/.gitignore b/bench/.gitignore new file mode 100644 index 00000000..c795b054 --- /dev/null +++ b/bench/.gitignore @@ -0,0 +1 @@ +build \ No newline at end of file diff --git a/bench/README.md b/bench/README.md new file mode 100644 index 00000000..d8b54b97 --- /dev/null +++ b/bench/README.md @@ -0,0 +1,91 @@ + ✔ RS lowlevel minimal contract (2.5s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 2.43T + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 0.05G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 5.08T + ✔ JS lowlevel minimal contract (4.5s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 4.22T + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 108.95G + ℹ WASM_INSTRUCTION : 1.68T + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 6.87T + + ✔ highlevel-minimal.ava › RS highlevel minimal contract (2.5s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 2.63T + ℹ BASE : 0.79G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 35.46G + ℹ READ_CACHED_TRIE_NODE : 4.56G + ℹ READ_MEMORY_BASE : 7.83G + ℹ READ_MEMORY_BYTE : 0.04G + ℹ STORAGE_READ_BASE : 56.36G + ℹ STORAGE_READ_KEY_BYTE : 0.15G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_KEY_BYTE : 0.35G + ℹ TOUCHING_TRIE_NODE : 32.2G + ℹ WASM_INSTRUCTION : 0.46G + ℹ WRITE_MEMORY_BASE : 2.8G + ℹ WRITE_MEMORY_BYTE : 0.04G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 5.28T + ✔ highlevel-minimal.ava › JS highlevel minimal contract (4.5s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 8.39T + ℹ BASE : 1.59G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 112.03G + ℹ READ_CACHED_TRIE_NODE : 6.84G + ℹ READ_MEMORY_BASE : 7.83G + ℹ READ_MEMORY_BYTE : 0.05G + ℹ READ_REGISTER_BASE : 2.52G + ℹ READ_REGISTER_BYTE : 0G + ℹ STORAGE_READ_BASE : 56.36G + ℹ STORAGE_READ_KEY_BYTE : 0.15G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_KEY_BYTE : 0.35G + ℹ STORAGE_WRITE_VALUE_BYTE : 0.06G + ℹ TOUCHING_TRIE_NODE : 48.31G + ℹ WASM_INSTRUCTION : 5.66T + ℹ WRITE_MEMORY_BASE : 5.61G + ℹ WRITE_MEMORY_BYTE : 0.05G + ℹ WRITE_REGISTER_BASE : 2.87G + ℹ WRITE_REGISTER_BYTE : 0.01G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 11.05T + + + ✔ RS lowlevel API contract (2.5s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 2.53T + ℹ BASE : 0.26G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 0.08G + ℹ READ_MEMORY_BASE : 5.22G + ℹ READ_MEMORY_BYTE : 0.08G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_KEY_BYTE : 0.7G + ℹ STORAGE_WRITE_VALUE_BYTE : 0.31G + ℹ TOUCHING_TRIE_NODE : 32.2G + ℹ WASM_INSTRUCTION : 0.02G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 5.18T + ✔ JS lowlevel API contract (4.5s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 7.74T + ℹ BASE : 0.26G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 111.38G + ℹ READ_MEMORY_BASE : 5.22G + ℹ READ_MEMORY_BYTE : 0.08G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_KEY_BYTE : 0.7G + ℹ STORAGE_WRITE_VALUE_BYTE : 0.31G + ℹ TOUCHING_TRIE_NODE : 48.31G + ℹ WASM_INSTRUCTION : 5.08T + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 10.39T diff --git a/bench/__tests__/test-highlevel-collection.ava.js b/bench/__tests__/test-highlevel-collection.ava.js new file mode 100644 index 00000000..c221fa21 --- /dev/null +++ b/bench/__tests__/test-highlevel-collection.ava.js @@ -0,0 +1,71 @@ +import { Worker } from "near-workspaces"; +import test from "ava"; +import {logGasDetail} from "./util.js"; + +test.before(async (t) => { + // Init the worker and start a Sandbox server + const worker = await Worker.init(); + + // Prepare sandbox for tests, create accounts, deploy contracts, etx. + const root = worker.rootAccount; + + // Deploy the test contract. + const highlevelContract = await root.devDeploy("build/highlevel-collection.wasm"); + const highlevelContractRs = await root.devDeploy("res/highlevel_collection.wasm"); + + // Test users + const ali = await root.createSubAccount("ali"); + const bob = await root.createSubAccount("bob"); + const carl = await root.createSubAccount("carl"); + + // Save state for test runs + t.context.worker = worker; + t.context.accounts = { root, highlevelContract, highlevelContractRs, ali, bob, carl }; +}); + + +test("JS highlevel minimal contract", async (t) => { + const { bob, highlevelContract } = t.context.accounts; + let r = await bob.callRaw( + highlevelContract, + "set", + JSON.stringify({key: 'a'.repeat(100), value: 'b'.repeat(100)}) + ); + r = await bob.callRaw( + highlevelContract, + "set", + JSON.stringify({key: 'b'.repeat(100), value: 'c'.repeat(100)}) + ); + r = await bob.callRaw( + highlevelContract, + "set", + JSON.stringify({key: 'c'.repeat(100), value: 'd'.repeat(100)}) + ); + + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); + +test("RS highlevel minimal contract", async (t) => { + const { bob, highlevelContractRs } = t.context.accounts; + let r = await bob.callRaw( + highlevelContractRs, + "set", + JSON.stringify({key: 'a'.repeat(100), value: 'b'.repeat(100)}) + ); + r = await bob.callRaw( + highlevelContractRs, + "set", + JSON.stringify({key: 'b'.repeat(100), value: 'c'.repeat(100)}) + ); + r = await bob.callRaw( + highlevelContractRs, + "set", + JSON.stringify({key: 'c'.repeat(100), value: 'd'.repeat(100)}) +); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); + \ No newline at end of file diff --git a/bench/__tests__/test-highlevel-minimal.ava.js b/bench/__tests__/test-highlevel-minimal.ava.js new file mode 100644 index 00000000..dd364867 --- /dev/null +++ b/bench/__tests__/test-highlevel-minimal.ava.js @@ -0,0 +1,50 @@ +import { Worker } from "near-workspaces"; +import test from "ava"; +import {logGasDetail} from "./util.js"; + +test.before(async (t) => { + // Init the worker and start a Sandbox server + const worker = await Worker.init(); + + // Prepare sandbox for tests, create accounts, deploy contracts, etx. + const root = worker.rootAccount; + + // Deploy the test contract. + const highlevelContract = await root.devDeploy("build/highlevel-minimal.wasm"); + const highlevelContractRs = await root.devDeploy("res/highlevel_minimal.wasm"); + + // Test users + const ali = await root.createSubAccount("ali"); + const bob = await root.createSubAccount("bob"); + const carl = await root.createSubAccount("carl"); + + // Save state for test runs + t.context.worker = worker; + t.context.accounts = { root, highlevelContract, highlevelContractRs, ali, bob, carl }; +}); + + +test("JS highlevel minimal contract", async (t) => { + const { bob, highlevelContract } = t.context.accounts; + let r = await bob.callRaw( + highlevelContract, + "empty", + "" + ); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); + +test("RS highlevel minimal contract", async (t) => { + const { bob, highlevelContractRs } = t.context.accounts; + let r = await bob.callRaw( + highlevelContractRs, + "empty", + "" + ); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); + \ No newline at end of file diff --git a/bench/__tests__/test-lowlevel-api.ava.js b/bench/__tests__/test-lowlevel-api.ava.js new file mode 100644 index 00000000..a6f814f1 --- /dev/null +++ b/bench/__tests__/test-lowlevel-api.ava.js @@ -0,0 +1,50 @@ +import { Worker } from "near-workspaces"; +import test from "ava"; +import {logGasDetail} from "./util.js"; + +test.before(async (t) => { + // Init the worker and start a Sandbox server + const worker = await Worker.init(); + + // Prepare sandbox for tests, create accounts, deploy contracts, etx. + const root = worker.rootAccount; + + // Deploy the test contract. + const lowlevelContract = await root.devDeploy("build/lowlevel-api.wasm"); + const lowlevelContractRs = await root.devDeploy("res/lowlevel_api.wasm"); + + // Test users + const ali = await root.createSubAccount("ali"); + const bob = await root.createSubAccount("bob"); + const carl = await root.createSubAccount("carl"); + + // Save state for test runs + t.context.worker = worker; + t.context.accounts = { root, lowlevelContract, lowlevelContractRs, ali, bob, carl }; +}); + + +test("JS lowlevel API contract", async (t) => { + const { bob, lowlevelContract } = t.context.accounts; + let r = await bob.callRaw( + lowlevelContract, + "lowlevel_storage_write", + "" + ); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); + +test("RS lowlevel API contract", async (t) => { + const { bob, lowlevelContractRs } = t.context.accounts; + let r = await bob.callRaw( + lowlevelContractRs, + "lowlevel_storage_write", + "" + ); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); + \ No newline at end of file diff --git a/bench/__tests__/test-lowlevel-minimal.ava.js b/bench/__tests__/test-lowlevel-minimal.ava.js new file mode 100644 index 00000000..3573910a --- /dev/null +++ b/bench/__tests__/test-lowlevel-minimal.ava.js @@ -0,0 +1,50 @@ +import { Worker } from "near-workspaces"; +import test from "ava"; +import {logGasDetail} from "./util.js"; + +test.before(async (t) => { + // Init the worker and start a Sandbox server + const worker = await Worker.init(); + + // Prepare sandbox for tests, create accounts, deploy contracts, etx. + const root = worker.rootAccount; + + // Deploy the test contract. + const lowlevelContract = await root.devDeploy("build/lowlevel-minimal.wasm"); + const lowlevelContractRs = await root.devDeploy("res/lowlevel_minimal.wasm"); + + // Test users + const ali = await root.createSubAccount("ali"); + const bob = await root.createSubAccount("bob"); + const carl = await root.createSubAccount("carl"); + + // Save state for test runs + t.context.worker = worker; + t.context.accounts = { root, lowlevelContract, lowlevelContractRs, ali, bob, carl }; +}); + + +test("JS lowlevel minimal contract", async (t) => { + const { bob, lowlevelContract } = t.context.accounts; + let r = await bob.callRaw( + lowlevelContract, + "empty", + "" + ); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); + +test("RS lowlevel minimal contract", async (t) => { + const { bob, lowlevelContractRs } = t.context.accounts; + let r = await bob.callRaw( + lowlevelContractRs, + "empty", + "" + ); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); + \ No newline at end of file diff --git a/bench/__tests__/util.js b/bench/__tests__/util.js new file mode 100644 index 00000000..560bf5df --- /dev/null +++ b/bench/__tests__/util.js @@ -0,0 +1,31 @@ +export function formatGas(gas) { + if (gas < 10 ** 12) { + let tGas = gas / 10**9 + let roundTGas = Math.round(tGas * 100) / 100 + return roundTGas + 'G' + } + let tGas = gas / 10**12 + let roundTGas = Math.round(tGas * 100) / 100 + return roundTGas + 'T' +} + +export function gasBreakdown(outcome) { + return new Map(outcome.metadata.gas_profile.map(g => { + return [g.cost, Number(g.gas_used)] + })); +} + +export function logGasBreakdown(map, t) { + map.forEach((v, k) => { + t.log(' ', k, ': ', formatGas(v)) + }); +} + +export function logGasDetail(r, t) { + t.log('Gas used to convert transaction to receipt: ', formatGas(r.result.transaction_outcome.outcome.gas_burnt)) + t.log('Gas used to execute the receipt (actual contract call): ', formatGas(r.result.receipts_outcome[0].outcome.gas_burnt)) + let map = gasBreakdown(r.result.receipts_outcome[0].outcome) + logGasBreakdown(map, t); + t.log('Gas used to refund unused gas: ', formatGas(r.result.receipts_outcome[1].outcome.gas_burnt)) + t.log('Total gas used: ', formatGas(r.result.transaction_outcome.outcome.gas_burnt+r.result.receipts_outcome[0].outcome.gas_burnt+r.result.receipts_outcome[1].outcome.gas_burnt)) +} \ No newline at end of file diff --git a/bench/ava.config.cjs b/bench/ava.config.cjs new file mode 100644 index 00000000..d5a8c029 --- /dev/null +++ b/bench/ava.config.cjs @@ -0,0 +1,8 @@ +require("util").inspect.defaultOptions.depth = 5; // Increase AVA's printing depth + +module.exports = { + timeout: "300000", + files: ["**/*.ava.js"], + failWithoutAssertions: false, + extensions: ["js"], +}; diff --git a/bench/example-outcome.json b/bench/example-outcome.json new file mode 100644 index 00000000..da678031 --- /dev/null +++ b/bench/example-outcome.json @@ -0,0 +1,116 @@ +{ + "result": { + "receipts_outcome": [ + { + "block_hash": "B5zQjLFz1zu36xoUd37Bghzeanw8YfbkLk9amcVdPX4H", + "id": "7GaMgKm53Mv5hwimyLTQnxEvaacvSABHhhJXbQYFkiXi", + "outcome": { + "executor_id": "dev-14843.test.near", + "gas_burnt": 4217783714059, + "logs": [], + "metadata": { + "gas_profile": [ + { + "cost": "CONTRACT_LOADING_BASE", + "cost_category": "WASM_HOST_COST", + "gas_used": "35445963" + }, + { + "cost": "CONTRACT_LOADING_BYTES", + "cost_category": "WASM_HOST_COST", + "gas_used": "108947436750" + }, + { + "cost": "WASM_INSTRUCTION", + "cost_category": "WASM_HOST_COST", + "gas_used": "1680864179808" + } + ], + "version": 1 + }, + "receipt_ids": [ + "8FYdTYgNnz5jnCDFFHfbyrBVq5rp9beStZYjxjrXvQ5F" + ], + "status": { + "SuccessValue": "" + }, + "tokens_burnt": "4217783714059000000000" + }, + "proof": [] + }, + { + "block_hash": "4oUZamxqDyUuMp47xfGE7FTnRBRC28VdMuPCS3oSCKpw", + "id": "8FYdTYgNnz5jnCDFFHfbyrBVq5rp9beStZYjxjrXvQ5F", + "outcome": { + "executor_id": "bob.test.near", + "gas_burnt": 223182562500, + "logs": [], + "metadata": { + "gas_profile": [], + "version": 1 + }, + "receipt_ids": [], + "status": { + "SuccessValue": "" + }, + "tokens_burnt": "0" + }, + "proof": [] + } + ], + "status": { + "SuccessValue": "" + }, + "transaction": { + "actions": [ + { + "FunctionCall": { + "args": "IiI=", + "deposit": "0", + "gas": 30000000000000, + "method_name": "empty" + } + } + ], + "hash": "9TvjxGooYJ7A1Ju6NHocss2uCqPeUKiEv1EwPoiXUsS2", + "nonce": 10000001, + "public_key": "ed25519:5iyD5kpiWwBgW3vunXJdmj66ArJAZBhGUxHEud6UKbyr", + "receiver_id": "dev-14843.test.near", + "signature": "ed25519:5jb67kd3VoTnBWxpSgyHENdWerGwLaa5QJHaKVvaxrZosymia2cKf3DNC4ES3PHZ7mXHkky5JTheqnzzjCpop7fx", + "signer_id": "bob.test.near" + }, + "transaction_outcome": { + "block_hash": "FQAFEjJVuBJK6Mf64DxfpMPWifP8jyEUJc6zW3yn1rca", + "id": "9TvjxGooYJ7A1Ju6NHocss2uCqPeUKiEv1EwPoiXUsS2", + "outcome": { + "executor_id": "bob.test.near", + "gas_burnt": 2427936651538, + "logs": [], + "metadata": { + "gas_profile": null, + "version": 1 + }, + "receipt_ids": [ + "7GaMgKm53Mv5hwimyLTQnxEvaacvSABHhhJXbQYFkiXi" + ], + "status": { + "SuccessReceiptId": "7GaMgKm53Mv5hwimyLTQnxEvaacvSABHhhJXbQYFkiXi" + }, + "tokens_burnt": "2427936651538000000000" + }, + "proof": [] + } + }, + "startMs": 1675654730297, + "endMs": 1675654732818, + "config": { + "network": "sandbox", + "rootAccountId": "test.near", + "rpcAddr": "http://localhost:6163", + "initialBalance": "100000000000000000000000000", + "homeDir": "/tmp/sandbox/7a047a19-1712-48ba-9704-d5831cf91f2a", + "port": 6163, + "rm": false, + "refDir": null + } +} \ No newline at end of file diff --git a/bench/jsconfig.json b/bench/jsconfig.json new file mode 100644 index 00000000..a6d61863 --- /dev/null +++ b/bench/jsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "experimentalDecorators": true + }, + "exclude": ["node_modules"] +} diff --git a/bench/package.json b/bench/package.json new file mode 100644 index 00000000..6229527e --- /dev/null +++ b/bench/package.json @@ -0,0 +1,30 @@ +{ + "name": "bench", + "version": "1.0.0", + "description": "near-sdk-js benchmark", + "main": "index.js", + "type": "module", + "scripts": { + "build": "run-s build:*", + "build:lowlevel-minimal": "near-sdk-js build src/lowlevel-minimal.js build/lowlevel-minimal.wasm", + "build:highlevel-minimal": "near-sdk-js build src/highlevel-minimal.js build/highlevel-minimal.wasm", + "build:lowlevel-api": "near-sdk-js build src/lowlevel-api.js build/lowlevel-api.wasm", + "build:highlevel-collection": "near-sdk-js build src/highlevel-collection.js build/highlevel-collection.wasm", + "test": "ava", + "test:lowlevel-minimal": "ava __tests__/test-lowlevel-minimal.ava.js", + "test:highlevel-minimal": "ava __tests__/test-highlevel-minimal.ava.js", + "test:lowlevel-api": "ava __tests__/test-lowlevel-api.ava.js", + "test:highlevel-collection": "ava __tests__/test-highlevel-collection.ava.js" + }, + "author": "Near Inc ", + "license": "Apache-2.0", + "devDependencies": { + "ava": "^4.2.0", + "near-workspaces": "3.2.1", + "npm-run-all": "^4.1.5" + }, + "dependencies": { + "typescript": "^4.7.4", + "near-sdk-js": "workspace:*" + } +} diff --git a/bench/res/highlevel_minimal.wasm b/bench/res/highlevel_minimal.wasm new file mode 100755 index 0000000000000000000000000000000000000000..25e2f4b2c602a271120d02c4672e7497f1a552bc GIT binary patch literal 163586 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 literal 0 HcmV?d00001 diff --git a/bench/res/lowlevel_api.wasm b/bench/res/lowlevel_api.wasm new file mode 100755 index 0000000000000000000000000000000000000000..16318cd82e9e1a39c0711bf82f2c20fcaebbb38a GIT binary patch literal 387 zcmZ`#Jx>Bb5S`hBLpjk4i6#~%7qq|v0z@Rl#K>9O7#m};EO!$G?t|R zAMii$(_FEl@HO)?Z}RfqfKVX<0G3!kpZ)^VJ^(vLgQ9s!C9xDk;tM%S2*6;7c>}>V zPmLA!vTOs^3U+7VHfM$u#&XHvB#0LQ%_-o!Mp)$B7m45$`372?zmk~pfly?y;tM`A zTw!{iX+Y1ORN!Ju9q6sgH*n~Ho4v0;H(zfbg$|hP&Mj)m9Di3(GjvmXd+xHQl5S>c z%^v?bSa6?g)_GcbR#r6Ub4QKjCn0uV5 s1P-+1ky7N>220FKz4OkR_3Nv8!>NjP+xI(7zwNXdtyZnktu?!sKP5SA{{R30 literal 0 HcmV?d00001 diff --git a/bench/res/lowlevel_minimal.wasm b/bench/res/lowlevel_minimal.wasm new file mode 100755 index 0000000000000000000000000000000000000000..e519ff1c632161d97d30bbbdc40e1d82ecfce7f0 GIT binary patch literal 219 zcmY+6u};G<6h-f|owhVcAT|c1N-Qv>N+JU4*biXg2h3~yR1i3cY-h;Sej1-f#Kv@` zb962^dICU(-T|!$nI>E>ZuN=w=kpKp6aMeAFbglf50gSBen=Crw$^cCE1lDnTl*nA z*aJt=YHdg%$Gz#;3$5n=zh-$uxUx1TZoll%e|AX%UN45wyRnrJ)#{tO Date: Wed, 8 Feb 2023 14:32:25 +0800 Subject: [PATCH 02/10] highlevel collection and expensive calc bench --- bench/README.md | 200 ++++++++++++++++++ bench/__tests__/test-expensive-calc.ava.js | 86 ++++++++ .../test-highlevel-collection.ava.js | 17 +- bench/package.json | 7 +- bench/res/expensive_calc.wasm | Bin 0 -> 312666 bytes bench/res/highlevel_collection.wasm | Bin 0 -> 327309 bytes bench/src/expensive-calc.js | 15 ++ 7 files changed, 315 insertions(+), 10 deletions(-) create mode 100644 bench/__tests__/test-expensive-calc.ava.js create mode 100755 bench/res/expensive_calc.wasm create mode 100755 bench/res/highlevel_collection.wasm create mode 100644 bench/src/expensive-calc.js diff --git a/bench/README.md b/bench/README.md index d8b54b97..9345fa11 100644 --- a/bench/README.md +++ b/bench/README.md @@ -89,3 +89,203 @@ ℹ WASM_INSTRUCTION : 5.08T ℹ Gas used to refund unused gas: 223.18G ℹ Total gas used: 10.39T + +✔ RS highlevel collection contract (8.6s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 3.32T + ℹ BASE : 3.18G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 70.94G + ℹ READ_CACHED_TRIE_NODE : 95.76G + ℹ READ_MEMORY_BASE : 26.1G + ℹ READ_MEMORY_BYTE : 1.87G + ℹ READ_REGISTER_BASE : 5.03G + ℹ READ_REGISTER_BYTE : 0.03G + ℹ STORAGE_READ_BASE : 112.71G + ℹ STORAGE_READ_KEY_BYTE : 3.44G + ℹ STORAGE_READ_VALUE_BYTE : 0.19G + ℹ STORAGE_WRITE_BASE : 256.79G + ℹ STORAGE_WRITE_EVICTED_BYTE : 1.09G + ℹ STORAGE_WRITE_KEY_BYTE : 9.23G + ℹ STORAGE_WRITE_VALUE_BYTE : 7.75G + ℹ TOUCHING_TRIE_NODE : 257.63G + ℹ WASM_INSTRUCTION : 16.36G + ℹ WRITE_MEMORY_BASE : 8.41G + ℹ WRITE_MEMORY_BYTE : 0.74G + ℹ WRITE_REGISTER_BASE : 8.6G + ℹ WRITE_REGISTER_BYTE : 1.1G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 5.97T + ✔ JS highlevel collection contract (9.6s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 10.06T + ℹ BASE : 2.91G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 113.46G + ℹ READ_CACHED_TRIE_NODE : 72.96G + ℹ READ_MEMORY_BASE : 20.88G + ℹ READ_MEMORY_BYTE : 2G + ℹ READ_REGISTER_BASE : 5.03G + ℹ READ_REGISTER_BYTE : 0.03G + ℹ STORAGE_READ_BASE : 112.71G + ℹ STORAGE_READ_KEY_BYTE : 3.31G + ℹ STORAGE_READ_VALUE_BYTE : 0.53G + ℹ STORAGE_WRITE_BASE : 192.59G + ℹ STORAGE_WRITE_EVICTED_BYTE : 3.02G + ℹ STORAGE_WRITE_KEY_BYTE : 7.96G + ℹ STORAGE_WRITE_VALUE_BYTE : 9.49G + ℹ TOUCHING_TRIE_NODE : 209.33G + ℹ WASM_INSTRUCTION : 6.86T + ℹ WRITE_MEMORY_BASE : 8.41G + ℹ WRITE_MEMORY_BYTE : 0.9G + ℹ WRITE_REGISTER_BASE : 8.6G + ℹ WRITE_REGISTER_BYTE : 1.55G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 12.71T + + + ✔ JS expensive contract, iterate 20000 times (2.5s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 123.26T + ℹ BASE : 1.85G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 112.09G + ℹ READ_CACHED_TRIE_NODE : 4.56G + ℹ READ_MEMORY_BASE : 10.44G + ℹ READ_MEMORY_BYTE : 0.07G + ℹ READ_REGISTER_BASE : 2.52G + ℹ READ_REGISTER_BYTE : 0G + ℹ STORAGE_READ_BASE : 56.36G + ℹ STORAGE_READ_KEY_BYTE : 0.15G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_KEY_BYTE : 0.35G + ℹ STORAGE_WRITE_VALUE_BYTE : 0.06G + ℹ TOUCHING_TRIE_NODE : 32.2G + ℹ WASM_INSTRUCTION : 120.54T + ℹ WRITE_MEMORY_BASE : 5.61G + ℹ WRITE_MEMORY_BYTE : 0.07G + ℹ WRITE_REGISTER_BASE : 2.87G + ℹ WRITE_REGISTER_BYTE : 0.04G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 125.91T + ✔ RS expensive contract. iterate 20000 times (3.5s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 3.01T + ℹ BASE : 1.85G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 67.77G + ℹ READ_CACHED_TRIE_NODE : 6.84G + ℹ READ_MEMORY_BASE : 10.44G + ℹ READ_MEMORY_BYTE : 0.06G + ℹ READ_REGISTER_BASE : 2.52G + ℹ READ_REGISTER_BYTE : 0G + ℹ STORAGE_READ_BASE : 56.36G + ℹ STORAGE_READ_KEY_BYTE : 0.15G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_KEY_BYTE : 0.35G + ℹ TOUCHING_TRIE_NODE : 48.31G + ℹ WASM_INSTRUCTION : 315.17G + ℹ WRITE_MEMORY_BASE : 5.61G + ℹ WRITE_MEMORY_BYTE : 0.07G + ℹ WRITE_REGISTER_BASE : 2.87G + ℹ WRITE_REGISTER_BYTE : 0.04G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 5.66T + ✔ RS expensive contract. iterate 10000 times (5.3s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 2.9T + ℹ BASE : 2.38G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 67.77G + ℹ READ_CACHED_TRIE_NODE : 13.68G + ℹ READ_MEMORY_BASE : 10.44G + ℹ READ_MEMORY_BYTE : 0.06G + ℹ READ_REGISTER_BASE : 5.03G + ℹ READ_REGISTER_BYTE : 0G + ℹ STORAGE_READ_BASE : 56.36G + ℹ STORAGE_READ_KEY_BYTE : 0.15G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_KEY_BYTE : 0.35G + ℹ TOUCHING_TRIE_NODE : 80.51G + ℹ WASM_INSTRUCTION : 158.89G + ℹ WRITE_MEMORY_BASE : 8.41G + ℹ WRITE_MEMORY_BYTE : 0.07G + ℹ WRITE_REGISTER_BASE : 8.6G + ℹ WRITE_REGISTER_BYTE : 0.04G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 5.56T + ✔ RS expensive contract. iterate 100 times (8s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 2.75T + ℹ BASE : 2.38G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 67.77G + ℹ READ_CACHED_TRIE_NODE : 13.68G + ℹ READ_MEMORY_BASE : 10.44G + ℹ READ_MEMORY_BYTE : 0.05G + ℹ READ_REGISTER_BASE : 5.03G + ℹ READ_REGISTER_BYTE : 0G + ℹ STORAGE_READ_BASE : 56.36G + ℹ STORAGE_READ_KEY_BYTE : 0.15G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_KEY_BYTE : 0.35G + ℹ TOUCHING_TRIE_NODE : 80.51G + ℹ WASM_INSTRUCTION : 4.02G + ℹ WRITE_MEMORY_BASE : 8.41G + ℹ WRITE_MEMORY_BYTE : 0.07G + ℹ WRITE_REGISTER_BASE : 8.6G + ℹ WRITE_REGISTER_BYTE : 0.03G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 5.4T + ✔ JS expensive contract, iterate 100 times (10.1s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 9.09T + ℹ BASE : 2.38G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 112.09G + ℹ READ_CACHED_TRIE_NODE : 13.68G + ℹ READ_MEMORY_BASE : 10.44G + ℹ READ_MEMORY_BYTE : 0.06G + ℹ READ_REGISTER_BASE : 5.03G + ℹ READ_REGISTER_BYTE : 0G + ℹ STORAGE_READ_BASE : 56.36G + ℹ STORAGE_READ_KEY_BYTE : 0.15G + ℹ STORAGE_READ_VALUE_BYTE : 0.01G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_EVICTED_BYTE : 0.06G + ℹ STORAGE_WRITE_KEY_BYTE : 0.35G + ℹ STORAGE_WRITE_VALUE_BYTE : 0.06G + ℹ TOUCHING_TRIE_NODE : 80.51G + ℹ WASM_INSTRUCTION : 6.3T + ℹ WRITE_MEMORY_BASE : 8.41G + ℹ WRITE_MEMORY_BYTE : 0.07G + ℹ WRITE_REGISTER_BASE : 8.6G + ℹ WRITE_REGISTER_BYTE : 0.05G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 11.75T + ✔ JS expensive contract, iterate 10000 times (13.7s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 65.94T + ℹ BASE : 2.38G + ℹ CONTRACT_LOADING_BASE : 0.04G + ℹ CONTRACT_LOADING_BYTES : 112.09G + ℹ READ_CACHED_TRIE_NODE : 13.68G + ℹ READ_MEMORY_BASE : 10.44G + ℹ READ_MEMORY_BYTE : 0.06G + ℹ READ_REGISTER_BASE : 5.03G + ℹ READ_REGISTER_BYTE : 0G + ℹ STORAGE_READ_BASE : 56.36G + ℹ STORAGE_READ_KEY_BYTE : 0.15G + ℹ STORAGE_READ_VALUE_BYTE : 0.01G + ℹ STORAGE_WRITE_BASE : 64.2G + ℹ STORAGE_WRITE_EVICTED_BYTE : 0.06G + ℹ STORAGE_WRITE_KEY_BYTE : 0.35G + ℹ STORAGE_WRITE_VALUE_BYTE : 0.06G + ℹ TOUCHING_TRIE_NODE : 80.51G + ℹ WASM_INSTRUCTION : 63.15T + ℹ WRITE_MEMORY_BASE : 8.41G + ℹ WRITE_MEMORY_BYTE : 0.08G + ℹ WRITE_REGISTER_BASE : 8.6G + ℹ WRITE_REGISTER_BYTE : 0.06G + ℹ Gas used to refund unused gas: 223.18G + ℹ Total gas used: 68.59T diff --git a/bench/__tests__/test-expensive-calc.ava.js b/bench/__tests__/test-expensive-calc.ava.js new file mode 100644 index 00000000..5743227f --- /dev/null +++ b/bench/__tests__/test-expensive-calc.ava.js @@ -0,0 +1,86 @@ +import { Worker } from "near-workspaces"; +import test from "ava"; +import { logGasDetail } from "./util.js"; + +test.before(async (t) => { + // Init the worker and start a Sandbox server + const worker = await Worker.init(); + + // Prepare sandbox for tests, create accounts, deploy contracts, etx. + const root = worker.rootAccount; + + // Deploy the test contract. + const expensiveContract = await root.devDeploy("build/expensive-calc.wasm"); + const expensiveContractRs = await root.devDeploy("res/expensive_calc.wasm"); + + // Test users + const ali = await root.createSubAccount("ali"); + const bob = await root.createSubAccount("bob"); + const carl = await root.createSubAccount("carl"); + + // Save state for test runs + t.context.worker = worker; + t.context.accounts = { + root, + expensiveContract, + expensiveContractRs, + ali, + bob, + carl, + }; +}); + +test("JS expensive contract, iterate 100 times", async (t) => { + const { bob, expensiveContract } = t.context.accounts; + let r = await bob.callRaw(expensiveContract, "expensive", { n: 100 }); + + t.is(r.result.status.SuccessValue, "LTUw"); + logGasDetail(r, t); +}); + +test("RS expensive contract. iterate 100 times", async (t) => { + const { bob, expensiveContractRs } = t.context.accounts; + let r = await bob.callRaw(expensiveContractRs, "expensive", { n: 100 }); + t.is(r.result.status.SuccessValue, "LTUw"); + logGasDetail(r, t); +}); + +test("JS expensive contract, iterate 10000 times", async (t) => { + const { bob, expensiveContract } = t.context.accounts; + let r = await bob.callRaw( + expensiveContract, + "expensive", + { n: 10000 }, + { gas: BigInt(300 * 10 ** 12) } + ); + + t.is(r.result.status.SuccessValue, "LTUwMDA="); + logGasDetail(r, t); +}); + +test("RS expensive contract. iterate 10000 times", async (t) => { + const { bob, expensiveContractRs } = t.context.accounts; + let r = await bob.callRaw(expensiveContractRs, "expensive", { n: 10000 }); + t.is(r.result.status.SuccessValue, "LTUwMDA="); + logGasDetail(r, t); +}); + +test("JS expensive contract, iterate 20000 times", async (t) => { + const { bob, expensiveContract } = t.context.accounts; + let r = await bob.callRaw( + expensiveContract, + "expensive", + { n: 20000 }, + { gas: BigInt(300 * 10 ** 12) } + ); + + t.is(r.result.status.SuccessValue, "LTEwMDAw"); + logGasDetail(r, t); +}); + +test("RS expensive contract. iterate 20000 times", async (t) => { + const { bob, expensiveContractRs } = t.context.accounts; + let r = await bob.callRaw(expensiveContractRs, "expensive", { n: 20000 }); + t.is(r.result.status.SuccessValue, "LTEwMDAw"); + logGasDetail(r, t); +}); diff --git a/bench/__tests__/test-highlevel-collection.ava.js b/bench/__tests__/test-highlevel-collection.ava.js index c221fa21..49c98f15 100644 --- a/bench/__tests__/test-highlevel-collection.ava.js +++ b/bench/__tests__/test-highlevel-collection.ava.js @@ -24,22 +24,22 @@ test.before(async (t) => { }); -test("JS highlevel minimal contract", async (t) => { +test("JS highlevel collection contract", async (t) => { const { bob, highlevelContract } = t.context.accounts; let r = await bob.callRaw( highlevelContract, "set", - JSON.stringify({key: 'a'.repeat(100), value: 'b'.repeat(100)}) + {key: 'a'.repeat(100), value: 'b'.repeat(100)} ); r = await bob.callRaw( highlevelContract, "set", - JSON.stringify({key: 'b'.repeat(100), value: 'c'.repeat(100)}) + {key: 'b'.repeat(100), value: 'c'.repeat(100)} ); r = await bob.callRaw( highlevelContract, "set", - JSON.stringify({key: 'c'.repeat(100), value: 'd'.repeat(100)}) + {key: 'c'.repeat(100), value: 'd'.repeat(100)} ); @@ -47,24 +47,23 @@ test("JS highlevel minimal contract", async (t) => { logGasDetail(r, t) }); -test("RS highlevel minimal contract", async (t) => { +test("RS highlevel collection contract", async (t) => { const { bob, highlevelContractRs } = t.context.accounts; let r = await bob.callRaw( highlevelContractRs, "set", - JSON.stringify({key: 'a'.repeat(100), value: 'b'.repeat(100)}) + {key: 'a'.repeat(100), value: 'b'.repeat(100)} ); r = await bob.callRaw( highlevelContractRs, "set", - JSON.stringify({key: 'b'.repeat(100), value: 'c'.repeat(100)}) + {key: 'b'.repeat(100), value: 'c'.repeat(100)} ); r = await bob.callRaw( highlevelContractRs, "set", - JSON.stringify({key: 'c'.repeat(100), value: 'd'.repeat(100)}) + {key: 'c'.repeat(100), value: 'd'.repeat(100)} ); - t.is(r.result.status.SuccessValue, ""); logGasDetail(r, t) }); diff --git a/bench/package.json b/bench/package.json index 6229527e..0a80a005 100644 --- a/bench/package.json +++ b/bench/package.json @@ -10,11 +10,16 @@ "build:highlevel-minimal": "near-sdk-js build src/highlevel-minimal.js build/highlevel-minimal.wasm", "build:lowlevel-api": "near-sdk-js build src/lowlevel-api.js build/lowlevel-api.wasm", "build:highlevel-collection": "near-sdk-js build src/highlevel-collection.js build/highlevel-collection.wasm", + "build:expensive-calc": "near-sdk-js build src/expensive-calc.js build/expensive-calc.wasm", + "build:deploy-contract": "near-sdk-js build src/deploy-contract.js build/deploy-contract.wasm", "test": "ava", "test:lowlevel-minimal": "ava __tests__/test-lowlevel-minimal.ava.js", "test:highlevel-minimal": "ava __tests__/test-highlevel-minimal.ava.js", "test:lowlevel-api": "ava __tests__/test-lowlevel-api.ava.js", - "test:highlevel-collection": "ava __tests__/test-highlevel-collection.ava.js" + "test:highlevel-collection": "ava __tests__/test-highlevel-collection.ava.js", + "test:expensive-calc": "ava __tests__/test-expensive-calc.ava.js", + "test:deploy-contract": "ava __tests__/test-deploy-contract.ava.js" + }, "author": "Near Inc ", "license": "Apache-2.0", diff --git a/bench/res/expensive_calc.wasm b/bench/res/expensive_calc.wasm new file mode 100755 index 0000000000000000000000000000000000000000..d89892ec67fd8bf4437c20855072a63445014db2 GIT binary patch literal 312666 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

}vyqqBBw#nJFS73-Zf<0|&v7C?@+ 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

unbgN#SMrc%5XNl-wiLa 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 literal 0 HcmV?d00001 diff --git a/bench/src/expensive-calc.js b/bench/src/expensive-calc.js new file mode 100644 index 00000000..1b0211bd --- /dev/null +++ b/bench/src/expensive-calc.js @@ -0,0 +1,15 @@ +import { NearBindgen, call, near } from "near-sdk-js"; + +@NearBindgen({}) +export class ExpensiveCalc { + @call({}) + expensive({ n }) { + let ret = 0; + let sign = 1; + for (let i = 0; i < n; i++) { + ret += i * sign; + sign *= -1; + } + near.valueReturn(ret.toString()) + } +} From a18f89ba40a55f7cd623a2c49016b7ac96b13eb4 Mon Sep 17 00:00:00 2001 From: Bo Yao Date: Fri, 10 Feb 2023 10:14:14 +0800 Subject: [PATCH 03/10] add deploy code benchmark --- bench/README.md | 92 +++++++++++++ bench/__tests__/test-deploy-contract.ava.js | 138 ++++++++++++++++++++ bench/__tests__/util.js | 6 +- bench/res/deploy_contract.wasm | Bin 0 -> 520566 bytes bench/src/deploy-contract.js | 19 +++ tests/src/promise_batch_api.js | 1 - 6 files changed, 252 insertions(+), 4 deletions(-) create mode 100644 bench/__tests__/test-deploy-contract.ava.js create mode 100755 bench/res/deploy_contract.wasm create mode 100644 bench/src/deploy-contract.js diff --git a/bench/README.md b/bench/README.md index 9345fa11..d6cbd264 100644 --- a/bench/README.md +++ b/bench/README.md @@ -1,3 +1,5 @@ + +https://github.com/near/sdk-rs-gas-benchmark ✔ RS lowlevel minimal contract (2.5s) ℹ Gas used to convert transaction to receipt: 2.43T ℹ Gas used to execute the receipt (actual contract call): 2.43T @@ -289,3 +291,93 @@ ℹ WRITE_REGISTER_BYTE : 0.06G ℹ Gas used to refund unused gas: 223.18G ℹ Total gas used: 68.59T + +-rwxrwxr-x 1 bo bo 109K Nov 23 17:16 ./examples/non-fungible-token/res/approval_receiver.wasm +-rwxrwxr-x 1 bo bo 248K Nov 23 17:16 ./examples/non-fungible-token/res/non_fungible_token.wasm +-rwxrwxr-x 1 bo bo 108K Nov 23 17:16 ./examples/non-fungible-token/res/token_receiver.wasm +-rwxrwxr-x 2 bo bo 109K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/approval_receiver.wasm +-rwxrwxr-x 2 bo bo 109K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/deps/approval_receiver.wasm +-rwxrwxr-x 2 bo bo 248K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/deps/non_fungible_token.wasm +-rwxrwxr-x 2 bo bo 108K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/deps/token_receiver.wasm +-rwxrwxr-x 2 bo bo 248K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/non_fungible_token.wasm +-rwxrwxr-x 2 bo bo 108K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/token_receiver.wasm +-rwxrwxr-x 1 bo bo 103K Feb 7 10:15 ./examples/status-message/res/status_message.wasm +-rwxrwxr-x 2 bo bo 124K Sep 27 09:36 ./examples/status-message/target/wasm32-unknown-unknown/release/deps/status_message.wasm +-rwxrwxr-x 2 bo bo 124K Sep 27 09:36 ./examples/status-message/target/wasm32-unknown-unknown/release/status_message.wasm +-rwxrwxr-x 2 bo bo 103K Feb 7 10:15 ./target/wasm32-unknown-unknown/release/deps/status_message.wasm +-rwxrwxr-x 2 bo bo 103K Feb 7 10:15 ./target/wasm32-unknown-unknown/release/status_message.wasm + +-rwxrwxr-x 1 bo bo 306K Feb 8 12:18 expensive_calc.wasm +-rwxrwxr-x 1 bo bo 320K Feb 8 11:26 highlevel_collection.wasm +-rwxrwxr-x 1 bo bo 160K Feb 7 10:51 highlevel_minimal.wasm +-rwxrwxr-x 1 bo bo 387 Feb 7 11:56 lowlevel_api.wasm +-rwxrwxr-x 1 bo bo 219 Feb 7 10:33 lowlevel_minimal.wasm + + + ✔ promise batch deploy contract and call (5.5s) + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 25.86T + ℹ CREATE_ACCOUNT : 0.09961T + ℹ DEPLOY_CONTRACT : 3.71T + ℹ FUNCTION_CALL : 2.32T + ℹ NEW_RECEIPT : 0.10806T + ℹ TRANSFER : 0.11512T + ℹ BASE : 0.00159T + ℹ CONTRACT_LOADING_BASE : 0.00004T + ℹ CONTRACT_LOADING_BYTES : 0.22386T + ℹ PROMISE_RETURN : 0.00056T + ℹ READ_MEMORY_BASE : 0.01566T + ℹ READ_MEMORY_BYTE : 1.97T + ℹ UTF8_DECODING_BASE : 0.00311T + ℹ UTF8_DECODING_BYTE : 0.00525T + ℹ WASM_INSTRUCTION : 14.86T + ℹ Gas used to execute the cross contract call: 41.9T + ℹ BASE : 0.00344T + ℹ CONTRACT_LOADING_BASE : 0.00004T + ℹ CONTRACT_LOADING_BYTES : 0.11228T + ℹ READ_MEMORY_BASE : 0.00261T + ℹ READ_MEMORY_BYTE : 0.0005T + ℹ READ_REGISTER_BASE : 0.01007T + ℹ READ_REGISTER_BYTE : 0T + ℹ WASM_INSTRUCTION : 5.47T + ℹ WRITE_MEMORY_BASE : 0.01122T + ℹ WRITE_MEMORY_BYTE : 0.00014T + ℹ WRITE_REGISTER_BASE : 0.01146T + ℹ WRITE_REGISTER_BYTE : 0.00019T + ℹ Gas used to refund unused gas for cross contract call: 0.22318T + ℹ Gas used to refund unused gas: 0.22318T + ℹ Total gas used: 70.63T + + ℹ Gas used to convert transaction to receipt: 2.43T + ℹ Gas used to execute the receipt (actual contract call): 10.89T + ℹ CREATE_ACCOUNT : 0.09961T + ℹ DEPLOY_CONTRACT : 3.71T + ℹ FUNCTION_CALL : 2.32T + ℹ NEW_RECEIPT : 0.10806T + ℹ TRANSFER : 0.11512T + ℹ BASE : 0.00159T + ℹ CONTRACT_LOADING_BASE : 0.00004T + ℹ CONTRACT_LOADING_BYTES : 0.11283T + ℹ PROMISE_RETURN : 0.00056T + ℹ READ_MEMORY_BASE : 0.01566T + ℹ READ_MEMORY_BYTE : 1.97T + ℹ UTF8_DECODING_BASE : 0.00311T + ℹ UTF8_DECODING_BYTE : 0.00525T + ℹ WASM_INSTRUCTION : 0.00038T + ℹ Gas used to execute the cross contract call: 41.9T + ℹ BASE : 0.00344T + ℹ CONTRACT_LOADING_BASE : 0.00004T + ℹ CONTRACT_LOADING_BYTES : 0.11228T + ℹ READ_MEMORY_BASE : 0.00261T + ℹ READ_MEMORY_BYTE : 0.0005T + ℹ READ_REGISTER_BASE : 0.01007T + ℹ READ_REGISTER_BYTE : 0T + ℹ WASM_INSTRUCTION : 5.47T + ℹ WRITE_MEMORY_BASE : 0.01122T + ℹ WRITE_MEMORY_BYTE : 0.00014T + ℹ WRITE_REGISTER_BASE : 0.01146T + ℹ WRITE_REGISTER_BYTE : 0.00019T + ℹ Gas used to refund unused gas for cross contract call: 0.22318T + ℹ Gas used to refund unused gas: 0.22318T + ℹ Total gas used: 55.67T + ─ diff --git a/bench/__tests__/test-deploy-contract.ava.js b/bench/__tests__/test-deploy-contract.ava.js new file mode 100644 index 00000000..c66453d3 --- /dev/null +++ b/bench/__tests__/test-deploy-contract.ava.js @@ -0,0 +1,138 @@ +import { Worker } from "near-workspaces"; +import test from "ava"; +import { + formatGas, + gasBreakdown, + logGasBreakdown, + logGasDetail, +} from "./util.js"; + +test.before(async (t) => { + // Init the worker and start a Sandbox server + const worker = await Worker.init(); + + // Prepare sandbox for tests, create accounts, deploy contracts, etx. + const root = worker.rootAccount; + + // Deploy the test contract. + const callerContract = await root.createSubAccount("caller", { + initialBalance: "1000N", + }); + await callerContract.deploy("build/deploy-contract.wasm"); + + const callerContractRs = await root.createSubAccount("callrs", { + initialBalance: "1000N", + }); + await callerContractRs.deploy("res/deploy_contract.wasm"); + // Test users + const ali = await root.createSubAccount("ali"); + const bob = await root.createSubAccount("bob"); + const carl = await root.createSubAccount("carl"); + + // Save state for test runs + t.context.worker = worker; + t.context.accounts = { root, callerContract, ali, bob, carl, callerContractRs }; +}); + +test("JS promise batch deploy contract and call", async (t) => { + const { bob, callerContract } = t.context.accounts; + + let r = await bob.callRaw(callerContract, "deploy_contract", "", { + gas: "300 Tgas", + }); + // console.log(JSON.stringify(r, null, 2)); + let deployed = callerContract.getSubAccount("a"); + t.deepEqual(JSON.parse(Buffer.from(r.result.status.SuccessValue, "base64")), { + currentAccountId: deployed.accountId, + signerAccountId: bob.accountId, + predecessorAccountId: callerContract.accountId, + input: "abc", + }); + + t.log( + "Gas used to convert transaction to receipt: ", + formatGas(r.result.transaction_outcome.outcome.gas_burnt) + ); + t.log( + "Gas used to execute the receipt (actual contract call): ", + formatGas(r.result.receipts_outcome[0].outcome.gas_burnt) + ); + let map = gasBreakdown(r.result.receipts_outcome[0].outcome); + logGasBreakdown(map, t); + t.log( + "Gas used to execute the cross contract call: ", + formatGas(r.result.receipts_outcome[1].outcome.gas_burnt) + ); + map = gasBreakdown(r.result.receipts_outcome[1].outcome); + logGasBreakdown(map, t); + t.log( + "Gas used to refund unused gas for cross contract call: ", + formatGas(r.result.receipts_outcome[2].outcome.gas_burnt) + ); + t.log( + "Gas used to refund unused gas: ", + formatGas(r.result.receipts_outcome[3].outcome.gas_burnt) + ); + t.log( + "Total gas used: ", + formatGas( + r.result.transaction_outcome.outcome.gas_burnt + + r.result.receipts_outcome[0].outcome.gas_burnt + + r.result.receipts_outcome[1].outcome.gas_burnt + + r.result.receipts_outcome[2].outcome.gas_burnt + + r.result.receipts_outcome[3].outcome.gas_burnt + ) + ); +}); + + +test("RS promise batch deploy contract and call", async (t) => { + const { bob, callerContractRs } = t.context.accounts; + + let r = await bob.callRaw(callerContractRs, "deploy_contract", "", { + gas: "300 Tgas", + }); + // console.log(JSON.stringify(r, null, 2)); + let deployed = callerContractRs.getSubAccount("a"); + t.deepEqual(JSON.parse(Buffer.from(r.result.status.SuccessValue, "base64")), { + currentAccountId: deployed.accountId, + signerAccountId: bob.accountId, + predecessorAccountId: callerContractRs.accountId, + input: "abc", + }); + + t.log( + "Gas used to convert transaction to receipt: ", + formatGas(r.result.transaction_outcome.outcome.gas_burnt) + ); + t.log( + "Gas used to execute the receipt (actual contract call): ", + formatGas(r.result.receipts_outcome[0].outcome.gas_burnt) + ); + let map = gasBreakdown(r.result.receipts_outcome[0].outcome); + logGasBreakdown(map, t); + t.log( + "Gas used to execute the cross contract call: ", + formatGas(r.result.receipts_outcome[1].outcome.gas_burnt) + ); + map = gasBreakdown(r.result.receipts_outcome[1].outcome); + logGasBreakdown(map, t); + t.log( + "Gas used to refund unused gas for cross contract call: ", + formatGas(r.result.receipts_outcome[2].outcome.gas_burnt) + ); + t.log( + "Gas used to refund unused gas: ", + formatGas(r.result.receipts_outcome[3].outcome.gas_burnt) + ); + t.log( + "Total gas used: ", + formatGas( + r.result.transaction_outcome.outcome.gas_burnt + + r.result.receipts_outcome[0].outcome.gas_burnt + + r.result.receipts_outcome[1].outcome.gas_burnt + + r.result.receipts_outcome[2].outcome.gas_burnt + + r.result.receipts_outcome[3].outcome.gas_burnt + ) + ); +}); diff --git a/bench/__tests__/util.js b/bench/__tests__/util.js index 560bf5df..38edb3e9 100644 --- a/bench/__tests__/util.js +++ b/bench/__tests__/util.js @@ -1,8 +1,8 @@ export function formatGas(gas) { if (gas < 10 ** 12) { - let tGas = gas / 10**9 - let roundTGas = Math.round(tGas * 100) / 100 - return roundTGas + 'G' + let tGas = gas / 10**12 + let roundTGas = Math.round(tGas * 100000) / 100000 + return roundTGas + 'T' } let tGas = gas / 10**12 let roundTGas = Math.round(tGas * 100) / 100 diff --git a/bench/res/deploy_contract.wasm b/bench/res/deploy_contract.wasm new file mode 100755 index 0000000000000000000000000000000000000000..4d54a9b4846e436cba65959c1ea99611e3b7c4a1 GIT binary patch literal 520566 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 E0H{MJ$p8QV literal 0 HcmV?d00001 diff --git a/bench/src/deploy-contract.js b/bench/src/deploy-contract.js new file mode 100644 index 00000000..802a19cb --- /dev/null +++ b/bench/src/deploy-contract.js @@ -0,0 +1,19 @@ +import {near} from 'near-sdk-js'; + +export function deploy_contract() { + let promiseId = near.promiseBatchCreate("a.caller.test.near"); + near.promiseBatchActionCreateAccount(promiseId); + near.promiseBatchActionTransfer(promiseId, 10000000000000000000000000n); + near.promiseBatchActionDeployContract( + promiseId, + includeBytes("../../tests/build/promise_api.wasm") + ); + near.promiseBatchActionFunctionCall( + promiseId, + "cross_contract_callee", + "abc", + 0, + 2 * Math.pow(10, 13) + ); + near.promiseReturn(promiseId); + } \ No newline at end of file diff --git a/tests/src/promise_batch_api.js b/tests/src/promise_batch_api.js index fe61d6fd..2e78d7de 100644 --- a/tests/src/promise_batch_api.js +++ b/tests/src/promise_batch_api.js @@ -77,7 +77,6 @@ export function test_promise_batch_deploy_call() { near.promiseBatchActionCreateAccount(promiseId); near.promiseBatchActionTransfer(promiseId, 10000000000000000000000000n); // deploy content of promise_api.wasm to `b.caller2.test.near` - // Note, we do not use `bytes()`, it's too expensive for long bytes and exceed gas limit near.promiseBatchActionDeployContract( promiseId, includeBytes("../build/promise_api.wasm") From 4d0bfa77e3054e8f6ddba780b3c80da4adabee94 Mon Sep 17 00:00:00 2001 From: Bo Yao Date: Fri, 10 Feb 2023 13:18:22 +0800 Subject: [PATCH 04/10] add readme --- bench/README.md | 806 ++++++++++++----------- bench/__tests__/test-lowlevel-api.ava.js | 25 +- bench/src/lowlevel-api.js | 16 +- bench/src/lowlevel-minimal.js | 5 +- 4 files changed, 477 insertions(+), 375 deletions(-) diff --git a/bench/README.md b/bench/README.md index d6cbd264..650f20f7 100644 --- a/bench/README.md +++ b/bench/README.md @@ -1,383 +1,447 @@ +# Gas and size benchmark compare to NEAR-SDK-RS -https://github.com/near/sdk-rs-gas-benchmark - ✔ RS lowlevel minimal contract (2.5s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 2.43T - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 0.05G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 5.08T - ✔ JS lowlevel minimal contract (4.5s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 4.22T - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 108.95G - ℹ WASM_INSTRUCTION : 1.68T - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 6.87T +## Summary +NEAR-SDK-JS bundles a bytecode VM with the contract bytecode to a wasm file. Currently, the bytecode VM is the QuickJS runtime with interface to NEAR and the contract bytecode is compiled from JavaScript source code with QuickJS Compiler (QJSC). - ✔ highlevel-minimal.ava › RS highlevel minimal contract (2.5s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 2.63T - ℹ BASE : 0.79G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 35.46G - ℹ READ_CACHED_TRIE_NODE : 4.56G - ℹ READ_MEMORY_BASE : 7.83G - ℹ READ_MEMORY_BYTE : 0.04G - ℹ STORAGE_READ_BASE : 56.36G - ℹ STORAGE_READ_KEY_BYTE : 0.15G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_KEY_BYTE : 0.35G - ℹ TOUCHING_TRIE_NODE : 32.2G - ℹ WASM_INSTRUCTION : 0.46G - ℹ WRITE_MEMORY_BASE : 2.8G - ℹ WRITE_MEMORY_BYTE : 0.04G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 5.28T - ✔ highlevel-minimal.ava › JS highlevel minimal contract (4.5s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 8.39T - ℹ BASE : 1.59G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 112.03G - ℹ READ_CACHED_TRIE_NODE : 6.84G - ℹ READ_MEMORY_BASE : 7.83G - ℹ READ_MEMORY_BYTE : 0.05G - ℹ READ_REGISTER_BASE : 2.52G - ℹ READ_REGISTER_BYTE : 0G - ℹ STORAGE_READ_BASE : 56.36G - ℹ STORAGE_READ_KEY_BYTE : 0.15G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_KEY_BYTE : 0.35G - ℹ STORAGE_WRITE_VALUE_BYTE : 0.06G - ℹ TOUCHING_TRIE_NODE : 48.31G - ℹ WASM_INSTRUCTION : 5.66T - ℹ WRITE_MEMORY_BASE : 5.61G - ℹ WRITE_MEMORY_BYTE : 0.05G - ℹ WRITE_REGISTER_BASE : 2.87G - ℹ WRITE_REGISTER_BYTE : 0.01G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 11.05T +This results in: +- Size of a minimal contract is 500K, which is also the size of the bytecode VM. +- Bytecode is more compact than wasm. Complex contract in JS adds less bytes to the equivalent wasm compiled from Rust, but due to the initial 500K size, the result contract is still bigger and within same order of magnitude: several hundred KB. +- For contract that bottlenecks at calling the host functions are using similar gas in JS and Rust. +- For contract that does a lot of computation in JS, the JS bytecode uses significantly more gas. +- For a real world contract, if it doesn't including complex logic in JavaScript, it's usually sufficient, consider the complexity of the near contract standards. +- For more complex logic, We suggest to bench the most expensive contract call, including most complex path of cross contract calls, to determine whether it fits 300T Gas limit. - ✔ RS lowlevel API contract (2.5s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 2.53T - ℹ BASE : 0.26G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 0.08G - ℹ READ_MEMORY_BASE : 5.22G - ℹ READ_MEMORY_BYTE : 0.08G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_KEY_BYTE : 0.7G - ℹ STORAGE_WRITE_VALUE_BYTE : 0.31G - ℹ TOUCHING_TRIE_NODE : 32.2G - ℹ WASM_INSTRUCTION : 0.02G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 5.18T - ✔ JS lowlevel API contract (4.5s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 7.74T - ℹ BASE : 0.26G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 111.38G - ℹ READ_MEMORY_BASE : 5.22G - ℹ READ_MEMORY_BYTE : 0.08G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_KEY_BYTE : 0.7G - ℹ STORAGE_WRITE_VALUE_BYTE : 0.31G - ℹ TOUCHING_TRIE_NODE : 48.31G - ℹ WASM_INSTRUCTION : 5.08T - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 10.39T +## Detailed gas benchmark -✔ RS highlevel collection contract (8.6s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 3.32T - ℹ BASE : 3.18G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 70.94G - ℹ READ_CACHED_TRIE_NODE : 95.76G - ℹ READ_MEMORY_BASE : 26.1G - ℹ READ_MEMORY_BYTE : 1.87G - ℹ READ_REGISTER_BASE : 5.03G - ℹ READ_REGISTER_BYTE : 0.03G - ℹ STORAGE_READ_BASE : 112.71G - ℹ STORAGE_READ_KEY_BYTE : 3.44G - ℹ STORAGE_READ_VALUE_BYTE : 0.19G - ℹ STORAGE_WRITE_BASE : 256.79G - ℹ STORAGE_WRITE_EVICTED_BYTE : 1.09G - ℹ STORAGE_WRITE_KEY_BYTE : 9.23G - ℹ STORAGE_WRITE_VALUE_BYTE : 7.75G - ℹ TOUCHING_TRIE_NODE : 257.63G - ℹ WASM_INSTRUCTION : 16.36G - ℹ WRITE_MEMORY_BASE : 8.41G - ℹ WRITE_MEMORY_BYTE : 0.74G - ℹ WRITE_REGISTER_BASE : 8.6G - ℹ WRITE_REGISTER_BYTE : 1.1G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 5.97T - ✔ JS highlevel collection contract (9.6s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 10.06T - ℹ BASE : 2.91G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 113.46G - ℹ READ_CACHED_TRIE_NODE : 72.96G - ℹ READ_MEMORY_BASE : 20.88G - ℹ READ_MEMORY_BYTE : 2G - ℹ READ_REGISTER_BASE : 5.03G - ℹ READ_REGISTER_BYTE : 0.03G - ℹ STORAGE_READ_BASE : 112.71G - ℹ STORAGE_READ_KEY_BYTE : 3.31G - ℹ STORAGE_READ_VALUE_BYTE : 0.53G - ℹ STORAGE_WRITE_BASE : 192.59G - ℹ STORAGE_WRITE_EVICTED_BYTE : 3.02G - ℹ STORAGE_WRITE_KEY_BYTE : 7.96G - ℹ STORAGE_WRITE_VALUE_BYTE : 9.49G - ℹ TOUCHING_TRIE_NODE : 209.33G - ℹ WASM_INSTRUCTION : 6.86T - ℹ WRITE_MEMORY_BASE : 8.41G - ℹ WRITE_MEMORY_BYTE : 0.9G - ℹ WRITE_REGISTER_BASE : 8.6G - ℹ WRITE_REGISTER_BYTE : 1.55G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 12.71T +### A minimal contract +- RS lowlevel minimal contract (2.5s) + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.43T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.00005T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 5.08T +- JS lowlevel minimal contract (4.5s) + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 7.07T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11132T + - WASM_INSTRUCTION : 4.53T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 9.72T - ✔ JS expensive contract, iterate 20000 times (2.5s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 123.26T - ℹ BASE : 1.85G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 112.09G - ℹ READ_CACHED_TRIE_NODE : 4.56G - ℹ READ_MEMORY_BASE : 10.44G - ℹ READ_MEMORY_BYTE : 0.07G - ℹ READ_REGISTER_BASE : 2.52G - ℹ READ_REGISTER_BYTE : 0G - ℹ STORAGE_READ_BASE : 56.36G - ℹ STORAGE_READ_KEY_BYTE : 0.15G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_KEY_BYTE : 0.35G - ℹ STORAGE_WRITE_VALUE_BYTE : 0.06G - ℹ TOUCHING_TRIE_NODE : 32.2G - ℹ WASM_INSTRUCTION : 120.54T - ℹ WRITE_MEMORY_BASE : 5.61G - ℹ WRITE_MEMORY_BYTE : 0.07G - ℹ WRITE_REGISTER_BASE : 2.87G - ℹ WRITE_REGISTER_BYTE : 0.04G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 125.91T - ✔ RS expensive contract. iterate 20000 times (3.5s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 3.01T - ℹ BASE : 1.85G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 67.77G - ℹ READ_CACHED_TRIE_NODE : 6.84G - ℹ READ_MEMORY_BASE : 10.44G - ℹ READ_MEMORY_BYTE : 0.06G - ℹ READ_REGISTER_BASE : 2.52G - ℹ READ_REGISTER_BYTE : 0G - ℹ STORAGE_READ_BASE : 56.36G - ℹ STORAGE_READ_KEY_BYTE : 0.15G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_KEY_BYTE : 0.35G - ℹ TOUCHING_TRIE_NODE : 48.31G - ℹ WASM_INSTRUCTION : 315.17G - ℹ WRITE_MEMORY_BASE : 5.61G - ℹ WRITE_MEMORY_BYTE : 0.07G - ℹ WRITE_REGISTER_BASE : 2.87G - ℹ WRITE_REGISTER_BYTE : 0.04G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 5.66T - ✔ RS expensive contract. iterate 10000 times (5.3s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 2.9T - ℹ BASE : 2.38G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 67.77G - ℹ READ_CACHED_TRIE_NODE : 13.68G - ℹ READ_MEMORY_BASE : 10.44G - ℹ READ_MEMORY_BYTE : 0.06G - ℹ READ_REGISTER_BASE : 5.03G - ℹ READ_REGISTER_BYTE : 0G - ℹ STORAGE_READ_BASE : 56.36G - ℹ STORAGE_READ_KEY_BYTE : 0.15G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_KEY_BYTE : 0.35G - ℹ TOUCHING_TRIE_NODE : 80.51G - ℹ WASM_INSTRUCTION : 158.89G - ℹ WRITE_MEMORY_BASE : 8.41G - ℹ WRITE_MEMORY_BYTE : 0.07G - ℹ WRITE_REGISTER_BASE : 8.6G - ℹ WRITE_REGISTER_BYTE : 0.04G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 5.56T - ✔ RS expensive contract. iterate 100 times (8s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 2.75T - ℹ BASE : 2.38G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 67.77G - ℹ READ_CACHED_TRIE_NODE : 13.68G - ℹ READ_MEMORY_BASE : 10.44G - ℹ READ_MEMORY_BYTE : 0.05G - ℹ READ_REGISTER_BASE : 5.03G - ℹ READ_REGISTER_BYTE : 0G - ℹ STORAGE_READ_BASE : 56.36G - ℹ STORAGE_READ_KEY_BYTE : 0.15G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_KEY_BYTE : 0.35G - ℹ TOUCHING_TRIE_NODE : 80.51G - ℹ WASM_INSTRUCTION : 4.02G - ℹ WRITE_MEMORY_BASE : 8.41G - ℹ WRITE_MEMORY_BYTE : 0.07G - ℹ WRITE_REGISTER_BASE : 8.6G - ℹ WRITE_REGISTER_BYTE : 0.03G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 5.4T - ✔ JS expensive contract, iterate 100 times (10.1s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 9.09T - ℹ BASE : 2.38G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 112.09G - ℹ READ_CACHED_TRIE_NODE : 13.68G - ℹ READ_MEMORY_BASE : 10.44G - ℹ READ_MEMORY_BYTE : 0.06G - ℹ READ_REGISTER_BASE : 5.03G - ℹ READ_REGISTER_BYTE : 0G - ℹ STORAGE_READ_BASE : 56.36G - ℹ STORAGE_READ_KEY_BYTE : 0.15G - ℹ STORAGE_READ_VALUE_BYTE : 0.01G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_EVICTED_BYTE : 0.06G - ℹ STORAGE_WRITE_KEY_BYTE : 0.35G - ℹ STORAGE_WRITE_VALUE_BYTE : 0.06G - ℹ TOUCHING_TRIE_NODE : 80.51G - ℹ WASM_INSTRUCTION : 6.3T - ℹ WRITE_MEMORY_BASE : 8.41G - ℹ WRITE_MEMORY_BYTE : 0.07G - ℹ WRITE_REGISTER_BASE : 8.6G - ℹ WRITE_REGISTER_BYTE : 0.05G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 11.75T - ✔ JS expensive contract, iterate 10000 times (13.7s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 65.94T - ℹ BASE : 2.38G - ℹ CONTRACT_LOADING_BASE : 0.04G - ℹ CONTRACT_LOADING_BYTES : 112.09G - ℹ READ_CACHED_TRIE_NODE : 13.68G - ℹ READ_MEMORY_BASE : 10.44G - ℹ READ_MEMORY_BYTE : 0.06G - ℹ READ_REGISTER_BASE : 5.03G - ℹ READ_REGISTER_BYTE : 0G - ℹ STORAGE_READ_BASE : 56.36G - ℹ STORAGE_READ_KEY_BYTE : 0.15G - ℹ STORAGE_READ_VALUE_BYTE : 0.01G - ℹ STORAGE_WRITE_BASE : 64.2G - ℹ STORAGE_WRITE_EVICTED_BYTE : 0.06G - ℹ STORAGE_WRITE_KEY_BYTE : 0.35G - ℹ STORAGE_WRITE_VALUE_BYTE : 0.06G - ℹ TOUCHING_TRIE_NODE : 80.51G - ℹ WASM_INSTRUCTION : 63.15T - ℹ WRITE_MEMORY_BASE : 8.41G - ℹ WRITE_MEMORY_BYTE : 0.08G - ℹ WRITE_REGISTER_BASE : 8.6G - ℹ WRITE_REGISTER_BYTE : 0.06G - ℹ Gas used to refund unused gas: 223.18G - ℹ Total gas used: 68.59T +In the very minimal contract the JS adds about `1.8T` gas. The major difference is loading the QuickJS VM and near-sdk-js uses 4.53T Gas. The 500K contract loading just adds 0.1T Gas. --rwxrwxr-x 1 bo bo 109K Nov 23 17:16 ./examples/non-fungible-token/res/approval_receiver.wasm --rwxrwxr-x 1 bo bo 248K Nov 23 17:16 ./examples/non-fungible-token/res/non_fungible_token.wasm --rwxrwxr-x 1 bo bo 108K Nov 23 17:16 ./examples/non-fungible-token/res/token_receiver.wasm --rwxrwxr-x 2 bo bo 109K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/approval_receiver.wasm --rwxrwxr-x 2 bo bo 109K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/deps/approval_receiver.wasm --rwxrwxr-x 2 bo bo 248K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/deps/non_fungible_token.wasm --rwxrwxr-x 2 bo bo 108K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/deps/token_receiver.wasm --rwxrwxr-x 2 bo bo 248K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/non_fungible_token.wasm --rwxrwxr-x 2 bo bo 108K Nov 23 17:16 ./examples/non-fungible-token/target/wasm32-unknown-unknown/release/token_receiver.wasm --rwxrwxr-x 1 bo bo 103K Feb 7 10:15 ./examples/status-message/res/status_message.wasm --rwxrwxr-x 2 bo bo 124K Sep 27 09:36 ./examples/status-message/target/wasm32-unknown-unknown/release/deps/status_message.wasm --rwxrwxr-x 2 bo bo 124K Sep 27 09:36 ./examples/status-message/target/wasm32-unknown-unknown/release/status_message.wasm --rwxrwxr-x 2 bo bo 103K Feb 7 10:15 ./target/wasm32-unknown-unknown/release/deps/status_message.wasm --rwxrwxr-x 2 bo bo 103K Feb 7 10:15 ./target/wasm32-unknown-unknown/release/status_message.wasm +### A highlevel minimal contract (using nearbindgen) +- highlevel-minimal.ava › RS highlevel minimal contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.63T + - BASE : 0.79G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 35.46G + - READ_CACHED_TRIE_NODE : 4.56G + - READ_MEMORY_BASE : 7.83G + - READ_MEMORY_BYTE : 0.04G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - TOUCHING_TRIE_NODE : 32.2G + - WASM_INSTRUCTION : 0.46G + - WRITE_MEMORY_BASE : 2.8G + - WRITE_MEMORY_BYTE : 0.04G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.28T +- highlevel-minimal.ava › JS highlevel minimal contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 8.39T + - BASE : 1.59G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 112.03G + - READ_CACHED_TRIE_NODE : 6.84G + - READ_MEMORY_BASE : 7.83G + - READ_MEMORY_BYTE : 0.05G + - READ_REGISTER_BASE : 2.52G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - STORAGE_WRITE_VALUE_BYTE : 0.06G + - TOUCHING_TRIE_NODE : 48.31G + - WASM_INSTRUCTION : 5.66T + - WRITE_MEMORY_BASE : 5.61G + - WRITE_MEMORY_BYTE : 0.05G + - WRITE_REGISTER_BASE : 2.87G + - WRITE_REGISTER_BYTE : 0.01G + - Gas used to refund unused gas: 223.18G + - Total gas used: 11.05T --rwxrwxr-x 1 bo bo 306K Feb 8 12:18 expensive_calc.wasm --rwxrwxr-x 1 bo bo 320K Feb 8 11:26 highlevel_collection.wasm --rwxrwxr-x 1 bo bo 160K Feb 7 10:51 highlevel_minimal.wasm --rwxrwxr-x 1 bo bo 387 Feb 7 11:56 lowlevel_api.wasm --rwxrwxr-x 1 bo bo 219 Feb 7 10:33 lowlevel_minimal.wasm +JS `@NearBindgen` is more expensive, the major difference is in `WASM_INSTRUCTION`, because `@NearBindgen` does some class, object manipulation work, but Rust `near_bindgen` is a compile time code generation macro. Deduct the 4.5T loading VM and near-sdk-js, it's about 1T gas overhead. +### Low level API - ✔ promise batch deploy contract and call (5.5s) - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 25.86T - ℹ CREATE_ACCOUNT : 0.09961T - ℹ DEPLOY_CONTRACT : 3.71T - ℹ FUNCTION_CALL : 2.32T - ℹ NEW_RECEIPT : 0.10806T - ℹ TRANSFER : 0.11512T - ℹ BASE : 0.00159T - ℹ CONTRACT_LOADING_BASE : 0.00004T - ℹ CONTRACT_LOADING_BYTES : 0.22386T - ℹ PROMISE_RETURN : 0.00056T - ℹ READ_MEMORY_BASE : 0.01566T - ℹ READ_MEMORY_BYTE : 1.97T - ℹ UTF8_DECODING_BASE : 0.00311T - ℹ UTF8_DECODING_BYTE : 0.00525T - ℹ WASM_INSTRUCTION : 14.86T - ℹ Gas used to execute the cross contract call: 41.9T - ℹ BASE : 0.00344T - ℹ CONTRACT_LOADING_BASE : 0.00004T - ℹ CONTRACT_LOADING_BYTES : 0.11228T - ℹ READ_MEMORY_BASE : 0.00261T - ℹ READ_MEMORY_BYTE : 0.0005T - ℹ READ_REGISTER_BASE : 0.01007T - ℹ READ_REGISTER_BYTE : 0T - ℹ WASM_INSTRUCTION : 5.47T - ℹ WRITE_MEMORY_BASE : 0.01122T - ℹ WRITE_MEMORY_BYTE : 0.00014T - ℹ WRITE_REGISTER_BASE : 0.01146T - ℹ WRITE_REGISTER_BYTE : 0.00019T - ℹ Gas used to refund unused gas for cross contract call: 0.22318T - ℹ Gas used to refund unused gas: 0.22318T - ℹ Total gas used: 70.63T +- RS lowlevel API contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.53T + - BASE : 0.00026T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.00008T + - READ_MEMORY_BASE : 0.00522T + - READ_MEMORY_BYTE : 0.00008T + - STORAGE_WRITE_BASE : 0.0642T + - STORAGE_WRITE_KEY_BYTE : 0.0007T + - STORAGE_WRITE_VALUE_BYTE : 0.00031T + - TOUCHING_TRIE_NODE : 0.0322T + - WASM_INSTRUCTION : 0.00002T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 5.18T +- JS lowlevel API contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 7.8T + - BASE : 0.00026T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11119T + - READ_MEMORY_BASE : 0.00522T + - READ_MEMORY_BYTE : 0.00008T + - STORAGE_WRITE_BASE : 0.0642T + - STORAGE_WRITE_EVICTED_BYTE : 0.00032T + - STORAGE_WRITE_KEY_BYTE : 0.0007T + - STORAGE_WRITE_VALUE_BYTE : 0.00031T + - TOUCHING_TRIE_NODE : 0.09661T + - WASM_INSTRUCTION : 5.09T + - WRITE_REGISTER_BASE : 0.00287T + - WRITE_REGISTER_BYTE : 0.00004T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 10.45T +- JS lowlevel API contract, call many + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 8.47T + - BASE : 0.00265T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11119T + - READ_MEMORY_BASE : 0.0522T + - READ_MEMORY_BYTE : 0.00076T + - STORAGE_WRITE_BASE : 0.64197T + - STORAGE_WRITE_EVICTED_BYTE : 0.00289T + - STORAGE_WRITE_KEY_BYTE : 0.00705T + - STORAGE_WRITE_VALUE_BYTE : 0.0031T + - TOUCHING_TRIE_NODE : 0.04831T + - WASM_INSTRUCTION : 5.14T + - WRITE_REGISTER_BASE : 0.02579T + - WRITE_REGISTER_BYTE : 0.00034T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 11.12T - ℹ Gas used to convert transaction to receipt: 2.43T - ℹ Gas used to execute the receipt (actual contract call): 10.89T - ℹ CREATE_ACCOUNT : 0.09961T - ℹ DEPLOY_CONTRACT : 3.71T - ℹ FUNCTION_CALL : 2.32T - ℹ NEW_RECEIPT : 0.10806T - ℹ TRANSFER : 0.11512T - ℹ BASE : 0.00159T - ℹ CONTRACT_LOADING_BASE : 0.00004T - ℹ CONTRACT_LOADING_BYTES : 0.11283T - ℹ PROMISE_RETURN : 0.00056T - ℹ READ_MEMORY_BASE : 0.01566T - ℹ READ_MEMORY_BYTE : 1.97T - ℹ UTF8_DECODING_BASE : 0.00311T - ℹ UTF8_DECODING_BYTE : 0.00525T - ℹ WASM_INSTRUCTION : 0.00038T - ℹ Gas used to execute the cross contract call: 41.9T - ℹ BASE : 0.00344T - ℹ CONTRACT_LOADING_BASE : 0.00004T - ℹ CONTRACT_LOADING_BYTES : 0.11228T - ℹ READ_MEMORY_BASE : 0.00261T - ℹ READ_MEMORY_BYTE : 0.0005T - ℹ READ_REGISTER_BASE : 0.01007T - ℹ READ_REGISTER_BYTE : 0T - ℹ WASM_INSTRUCTION : 5.47T - ℹ WRITE_MEMORY_BASE : 0.01122T - ℹ WRITE_MEMORY_BYTE : 0.00014T - ℹ WRITE_REGISTER_BASE : 0.01146T - ℹ WRITE_REGISTER_BYTE : 0.00019T - ℹ Gas used to refund unused gas for cross contract call: 0.22318T - ℹ Gas used to refund unused gas: 0.22318T - ℹ Total gas used: 55.67T - ─ +In this case, JS lowlevel API contract uses same gas in the storage write API part (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). The major excessive gas is due to the overhead of initialize QuickJS VM and loading near-sdk-js. We can see this more obviously by calling storage write for 10 times ("call many tests" in above). + +### Highlevel collection +- RS highlevel collection contract (8.6s) + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 3.32T + - BASE : 3.18G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 70.94G + - READ_CACHED_TRIE_NODE : 95.76G + - READ_MEMORY_BASE : 26.1G + - READ_MEMORY_BYTE : 1.87G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0.03G + - STORAGE_READ_BASE : 112.71G + - STORAGE_READ_KEY_BYTE : 3.44G + - STORAGE_READ_VALUE_BYTE : 0.19G + - STORAGE_WRITE_BASE : 256.79G + - STORAGE_WRITE_EVICTED_BYTE : 1.09G + - STORAGE_WRITE_KEY_BYTE : 9.23G + - STORAGE_WRITE_VALUE_BYTE : 7.75G + - TOUCHING_TRIE_NODE : 257.63G + - WASM_INSTRUCTION : 16.36G + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.74G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 1.1G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.97T + - JS highlevel collection contract (9.6s) + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 10.06T + - BASE : 2.91G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 113.46G + - READ_CACHED_TRIE_NODE : 72.96G + - READ_MEMORY_BASE : 20.88G + - READ_MEMORY_BYTE : 2G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0.03G + - STORAGE_READ_BASE : 112.71G + - STORAGE_READ_KEY_BYTE : 3.31G + - STORAGE_READ_VALUE_BYTE : 0.53G + - STORAGE_WRITE_BASE : 192.59G + - STORAGE_WRITE_EVICTED_BYTE : 3.02G + - STORAGE_WRITE_KEY_BYTE : 7.96G + - STORAGE_WRITE_VALUE_BYTE : 9.49G + - TOUCHING_TRIE_NODE : 209.33G + - WASM_INSTRUCTION : 6.86T + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.9G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 1.55G + - Gas used to refund unused gas: 223.18G + - Total gas used: 12.71T + +JS SDK's collection has about 1T overhead, deduct the 4.5T VM/near-sdk-js loading and 1T `@NearBindgen`. The gas used in actual writing the collection to storage is similar (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). + +### Computational expensive contract + - JS expensive contract, iterate 20000 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 123.26T + - BASE : 1.85G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 112.09G + - READ_CACHED_TRIE_NODE : 4.56G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.07G + - READ_REGISTER_BASE : 2.52G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - STORAGE_WRITE_VALUE_BYTE : 0.06G + - TOUCHING_TRIE_NODE : 32.2G + - WASM_INSTRUCTION : 120.54T + - WRITE_MEMORY_BASE : 5.61G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 2.87G + - WRITE_REGISTER_BYTE : 0.04G + - Gas used to refund unused gas: 223.18G + - Total gas used: 125.91T + - RS expensive contract. iterate 20000 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 3.01T + - BASE : 1.85G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 67.77G + - READ_CACHED_TRIE_NODE : 6.84G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.06G + - READ_REGISTER_BASE : 2.52G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - TOUCHING_TRIE_NODE : 48.31G + - WASM_INSTRUCTION : 315.17G + - WRITE_MEMORY_BASE : 5.61G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 2.87G + - WRITE_REGISTER_BYTE : 0.04G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.66T + - RS expensive contract. iterate 10000 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.9T + - BASE : 2.38G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 67.77G + - READ_CACHED_TRIE_NODE : 13.68G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.06G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - TOUCHING_TRIE_NODE : 80.51G + - WASM_INSTRUCTION : 158.89G + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 0.04G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.56T + - RS expensive contract. iterate 100 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.75T + - BASE : 2.38G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 67.77G + - READ_CACHED_TRIE_NODE : 13.68G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.05G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - TOUCHING_TRIE_NODE : 80.51G + - WASM_INSTRUCTION : 4.02G + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 0.03G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.4T + - JS expensive contract, iterate 100 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 9.09T + - BASE : 2.38G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 112.09G + - READ_CACHED_TRIE_NODE : 13.68G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.06G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_READ_VALUE_BYTE : 0.01G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_EVICTED_BYTE : 0.06G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - STORAGE_WRITE_VALUE_BYTE : 0.06G + - TOUCHING_TRIE_NODE : 80.51G + - WASM_INSTRUCTION : 6.3T + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 0.05G + - Gas used to refund unused gas: 223.18G + - Total gas used: 11.75T + - JS expensive contract, iterate 10000 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 65.94T + - BASE : 2.38G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 112.09G + - READ_CACHED_TRIE_NODE : 13.68G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.06G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_READ_VALUE_BYTE : 0.01G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_EVICTED_BYTE : 0.06G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - STORAGE_WRITE_VALUE_BYTE : 0.06G + - TOUCHING_TRIE_NODE : 80.51G + - WASM_INSTRUCTION : 63.15T + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.08G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 0.06G + - Gas used to refund unused gas: 223.18G + - Total gas used: 68.59T + +In this case, JS uses much more gas. Because JS Number is object and that's a lot of overhead compare to native integer arithmetic. It's even a lot of overhead compare to native float arithmetic. Also in QuickJS there's no JIT. If your contract does a lot of calculation or complex algorithm in JavaScript, it'd be better to do a similar benchmark. + + +### Deploy and cross contract call +- JS promise batch deploy contract and call + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 25.86T + - CREATE_ACCOUNT : 0.09961T + - DEPLOY_CONTRACT : 3.71T + - FUNCTION_CALL : 2.32T + - NEW_RECEIPT : 0.10806T + - TRANSFER : 0.11512T + - BASE : 0.00159T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.22386T + - PROMISE_RETURN : 0.00056T + - READ_MEMORY_BASE : 0.01566T + - READ_MEMORY_BYTE : 1.97T + - UTF8_DECODING_BASE : 0.00311T + - UTF8_DECODING_BYTE : 0.00525T + - WASM_INSTRUCTION : 14.86T + - Gas used to execute the cross contract call: 41.9T + - BASE : 0.00344T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11228T + - READ_MEMORY_BASE : 0.00261T + - READ_MEMORY_BYTE : 0.0005T + - READ_REGISTER_BASE : 0.01007T + - READ_REGISTER_BYTE : 0T + - WASM_INSTRUCTION : 5.47T + - WRITE_MEMORY_BASE : 0.01122T + - WRITE_MEMORY_BYTE : 0.00014T + - WRITE_REGISTER_BASE : 0.01146T + - WRITE_REGISTER_BYTE : 0.00019T + - Gas used to refund unused gas for cross contract call: 0.22318T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 70.63T + +- RS promise batch deploy contract and call + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 10.89T + - CREATE_ACCOUNT : 0.09961T + - DEPLOY_CONTRACT : 3.71T + - FUNCTION_CALL : 2.32T + - NEW_RECEIPT : 0.10806T + - TRANSFER : 0.11512T + - BASE : 0.00159T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11283T + - PROMISE_RETURN : 0.00056T + - READ_MEMORY_BASE : 0.01566T + - READ_MEMORY_BYTE : 1.97T + - UTF8_DECODING_BASE : 0.00311T + - UTF8_DECODING_BYTE : 0.00525T + - WASM_INSTRUCTION : 0.00038T + - Gas used to execute the cross contract call: 41.9T + - BASE : 0.00344T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11228T + - READ_MEMORY_BASE : 0.00261T + - READ_MEMORY_BYTE : 0.0005T + - READ_REGISTER_BASE : 0.01007T + - READ_REGISTER_BYTE : 0T + - WASM_INSTRUCTION : 5.47T + - WRITE_MEMORY_BASE : 0.01122T + - WRITE_MEMORY_BYTE : 0.00014T + - WRITE_REGISTER_BASE : 0.01146T + - WRITE_REGISTER_BYTE : 0.00019T + - Gas used to refund unused gas for cross contract call: 0.22318T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 55.67T + +In this test, we use a JS contract and RS contract to both deploy a JS contract and cross contract call this newly deployed contract. We can see the gas to do the cross contract call is the same. JS SDK has a `~10T` overhead to parse a `~500K` contract in byte. This is because JS, either represent code in Uint8Array or string has some overhead while rust compiler can directly turn it into data section in wasm. In practice, a 10T overhead for a one time contract deploy is not a big deal. + +## Tips to do your own benchmark + +If the above cases don't cover use case or you have a complex algorithm to implement in JavaScript, it's a good idea to benchmark your specific algorithm before choose near-sdk-js for your project. + +You don't have to implement the exact algorithm to estimate the gas usage. Instead, you can find out the most expensive execution path of the algorithm, and estimate it by using the upper bound. For example, store the biggest possible objects into the collection and iterate for most possible times. Then goes to write the benchmark and the total gas cannot be more than 300T to be a valid contract. Also, if it has cross contract call, make sure the total gas, that's a sum of all cross contract calls, is less than 300T. + +To Add your benchmark, write a one function contract of your most expensive operation. And write a test to call this function. If it doesn't involve cross contract call or promises, creating such test is simple. You can refer to `bench/src/expensive-calc.js` and `bench/__tests__/test-expensive-calc.ava.js` on how to write such test and print the gas breakdown. If it involves create promises or cross contract calls, printing the gas breakdown is a little bit more complex, you can refer to `bench/__tests__/test-deploy-contract.ava.js` for the recipe. + +## Details of size benchmark +### JS Contract +``` + +-rwxrwxr-x 1 bo bo 1009K Feb 9 10:49 ./build/deploy-contract.wasm +-rwxrwxr-x 1 bo bo 506K Feb 8 12:11 ./build/expensive-calc.wasm +-rwxrwxr-x 1 bo bo 512K Feb 7 15:57 ./build/highlevel-collection.wasm +-rwxrwxr-x 1 bo bo 505K Feb 7 10:53 ./build/highlevel-minimal.wasm +-rwxrwxr-x 1 bo bo 502K Feb 10 11:32 ./build/lowlevel-api.wasm +-rwxrwxr-x 1 bo bo 502K Feb 10 11:47 ./build/lowlevel-minimal.wasm +``` + +### Rust Contract +``` +-rwxrwxr-x 1 bo bo 509K Feb 10 10:02 ./res/deploy_contract.wasm +-rwxrwxr-x 1 bo bo 306K Feb 8 12:18 ./res/expensive_calc.wasm +-rwxrwxr-x 1 bo bo 320K Feb 8 11:26 ./res/highlevel_collection.wasm +-rwxrwxr-x 1 bo bo 160K Feb 7 10:51 ./res/highlevel_minimal.wasm +-rwxrwxr-x 1 bo bo 387 Feb 7 11:56 ./res/lowlevel_api.wasm +-rwxrwxr-x 1 bo bo 219 Feb 7 10:33 ./res/lowlevel_minimal.wasm +``` +## Appendix +- Source code of the rust benchmark: https://github.com/near/sdk-rs-gas-benchmark diff --git a/bench/__tests__/test-lowlevel-api.ava.js b/bench/__tests__/test-lowlevel-api.ava.js index a6f814f1..a11c9b8a 100644 --- a/bench/__tests__/test-lowlevel-api.ava.js +++ b/bench/__tests__/test-lowlevel-api.ava.js @@ -47,4 +47,27 @@ test("RS lowlevel API contract", async (t) => { t.is(r.result.status.SuccessValue, ""); logGasDetail(r, t) }); - \ No newline at end of file + +test("JS lowlevel API contract, call many", async (t) => { + const { bob, lowlevelContract } = t.context.accounts; + let r = await bob.callRaw( + lowlevelContract, + "lowlevel_storage_write_many", + "" + ); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); + +test("JS lowlevel API contract, write different", async (t) => { + const { bob, lowlevelContract } = t.context.accounts; + let r = await bob.callRaw( + lowlevelContract, + "lowlevel_storage_write_different", + "" + ); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t) +}); \ No newline at end of file diff --git a/bench/src/lowlevel-api.js b/bench/src/lowlevel-api.js index 66bb44fb..51bfc462 100644 --- a/bench/src/lowlevel-api.js +++ b/bench/src/lowlevel-api.js @@ -3,4 +3,18 @@ import { near } from "near-sdk-js"; export function lowlevel_storage_write() { let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); near.storageWriteRaw(data, data); -} \ No newline at end of file +} + +export function lowlevel_storage_write_many() { + let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); +} diff --git a/bench/src/lowlevel-minimal.js b/bench/src/lowlevel-minimal.js index 7738d099..31ba82ad 100644 --- a/bench/src/lowlevel-minimal.js +++ b/bench/src/lowlevel-minimal.js @@ -1,3 +1,4 @@ -export function empty() { - +import { near } from "near-sdk-js"; + +export function empty() { } \ No newline at end of file From 61057b10b169f11a142807f89d2b14b263da3bcd Mon Sep 17 00:00:00 2001 From: Bo Yao Date: Fri, 10 Feb 2023 13:21:29 +0800 Subject: [PATCH 05/10] comment on readme --- bench/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bench/README.md b/bench/README.md index 650f20f7..a498a61c 100644 --- a/bench/README.md +++ b/bench/README.md @@ -191,7 +191,7 @@ In this case, JS lowlevel API contract uses same gas in the storage write API pa - Gas used to refund unused gas: 223.18G - Total gas used: 12.71T -JS SDK's collection has about 1T overhead, deduct the 4.5T VM/near-sdk-js loading and 1T `@NearBindgen`. The gas used in actual writing the collection to storage is similar (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). +JS SDK's collection has about 1T overhead, deduct the 4.5T VM/near-sdk-js loading and 1T `@NearBindgen`. Note this benches the most complicated `UnorderedMap`, which gas usage is strictly greater than the other collections. And the gas used in actual writing the collection to storage is similar (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). ### Computational expensive contract - JS expensive contract, iterate 20000 times From bfd55c8edca824a001147ac9ba06870fd2a415a1 Mon Sep 17 00:00:00 2001 From: Bo Yao Date: Fri, 10 Feb 2023 13:24:48 +0800 Subject: [PATCH 06/10] format --- bench/README.md | 110 ++++++++++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/bench/README.md b/bench/README.md index a498a61c..2cbe9585 100644 --- a/bench/README.md +++ b/bench/README.md @@ -16,14 +16,14 @@ This results in: ### A minimal contract -- RS lowlevel minimal contract (2.5s) +- RS lowlevel minimal contract - Gas used to convert transaction to receipt: 2.43T - Gas used to execute the receipt (actual contract call): 2.43T - CONTRACT_LOADING_BASE : 0.00004T - CONTRACT_LOADING_BYTES : 0.00005T - Gas used to refund unused gas: 0.22318T - Total gas used: 5.08T -- JS lowlevel minimal contract (4.5s) +- JS lowlevel minimal contract - Gas used to convert transaction to receipt: 2.43T - Gas used to execute the receipt (actual contract call): 7.07T - CONTRACT_LOADING_BASE : 0.00004T @@ -138,58 +138,58 @@ JS `@NearBindgen` is more expensive, the major difference is in `WASM_INSTRUCTIO In this case, JS lowlevel API contract uses same gas in the storage write API part (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). The major excessive gas is due to the overhead of initialize QuickJS VM and loading near-sdk-js. We can see this more obviously by calling storage write for 10 times ("call many tests" in above). ### Highlevel collection -- RS highlevel collection contract (8.6s) - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 3.32T - - BASE : 3.18G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 70.94G - - READ_CACHED_TRIE_NODE : 95.76G - - READ_MEMORY_BASE : 26.1G - - READ_MEMORY_BYTE : 1.87G - - READ_REGISTER_BASE : 5.03G - - READ_REGISTER_BYTE : 0.03G - - STORAGE_READ_BASE : 112.71G - - STORAGE_READ_KEY_BYTE : 3.44G - - STORAGE_READ_VALUE_BYTE : 0.19G - - STORAGE_WRITE_BASE : 256.79G - - STORAGE_WRITE_EVICTED_BYTE : 1.09G - - STORAGE_WRITE_KEY_BYTE : 9.23G - - STORAGE_WRITE_VALUE_BYTE : 7.75G - - TOUCHING_TRIE_NODE : 257.63G - - WASM_INSTRUCTION : 16.36G - - WRITE_MEMORY_BASE : 8.41G - - WRITE_MEMORY_BYTE : 0.74G - - WRITE_REGISTER_BASE : 8.6G - - WRITE_REGISTER_BYTE : 1.1G - - Gas used to refund unused gas: 223.18G - - Total gas used: 5.97T - - JS highlevel collection contract (9.6s) - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 10.06T - - BASE : 2.91G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 113.46G - - READ_CACHED_TRIE_NODE : 72.96G - - READ_MEMORY_BASE : 20.88G - - READ_MEMORY_BYTE : 2G - - READ_REGISTER_BASE : 5.03G - - READ_REGISTER_BYTE : 0.03G - - STORAGE_READ_BASE : 112.71G - - STORAGE_READ_KEY_BYTE : 3.31G - - STORAGE_READ_VALUE_BYTE : 0.53G - - STORAGE_WRITE_BASE : 192.59G - - STORAGE_WRITE_EVICTED_BYTE : 3.02G - - STORAGE_WRITE_KEY_BYTE : 7.96G - - STORAGE_WRITE_VALUE_BYTE : 9.49G - - TOUCHING_TRIE_NODE : 209.33G - - WASM_INSTRUCTION : 6.86T - - WRITE_MEMORY_BASE : 8.41G - - WRITE_MEMORY_BYTE : 0.9G - - WRITE_REGISTER_BASE : 8.6G - - WRITE_REGISTER_BYTE : 1.55G - - Gas used to refund unused gas: 223.18G - - Total gas used: 12.71T +- RS highlevel collection contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 3.32T + - BASE : 3.18G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 70.94G + - READ_CACHED_TRIE_NODE : 95.76G + - READ_MEMORY_BASE : 26.1G + - READ_MEMORY_BYTE : 1.87G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0.03G + - STORAGE_READ_BASE : 112.71G + - STORAGE_READ_KEY_BYTE : 3.44G + - STORAGE_READ_VALUE_BYTE : 0.19G + - STORAGE_WRITE_BASE : 256.79G + - STORAGE_WRITE_EVICTED_BYTE : 1.09G + - STORAGE_WRITE_KEY_BYTE : 9.23G + - STORAGE_WRITE_VALUE_BYTE : 7.75G + - TOUCHING_TRIE_NODE : 257.63G + - WASM_INSTRUCTION : 16.36G + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.74G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 1.1G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.97T +- JS highlevel collection contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 10.06T + - BASE : 2.91G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 113.46G + - READ_CACHED_TRIE_NODE : 72.96G + - READ_MEMORY_BASE : 20.88G + - READ_MEMORY_BYTE : 2G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0.03G + - STORAGE_READ_BASE : 112.71G + - STORAGE_READ_KEY_BYTE : 3.31G + - STORAGE_READ_VALUE_BYTE : 0.53G + - STORAGE_WRITE_BASE : 192.59G + - STORAGE_WRITE_EVICTED_BYTE : 3.02G + - STORAGE_WRITE_KEY_BYTE : 7.96G + - STORAGE_WRITE_VALUE_BYTE : 9.49G + - TOUCHING_TRIE_NODE : 209.33G + - WASM_INSTRUCTION : 6.86T + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.9G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 1.55G + - Gas used to refund unused gas: 223.18G + - Total gas used: 12.71T JS SDK's collection has about 1T overhead, deduct the 4.5T VM/near-sdk-js loading and 1T `@NearBindgen`. Note this benches the most complicated `UnorderedMap`, which gas usage is strictly greater than the other collections. And the gas used in actual writing the collection to storage is similar (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). @@ -420,7 +420,7 @@ If the above cases don't cover use case or you have a complex algorithm to imple You don't have to implement the exact algorithm to estimate the gas usage. Instead, you can find out the most expensive execution path of the algorithm, and estimate it by using the upper bound. For example, store the biggest possible objects into the collection and iterate for most possible times. Then goes to write the benchmark and the total gas cannot be more than 300T to be a valid contract. Also, if it has cross contract call, make sure the total gas, that's a sum of all cross contract calls, is less than 300T. -To Add your benchmark, write a one function contract of your most expensive operation. And write a test to call this function. If it doesn't involve cross contract call or promises, creating such test is simple. You can refer to `bench/src/expensive-calc.js` and `bench/__tests__/test-expensive-calc.ava.js` on how to write such test and print the gas breakdown. If it involves create promises or cross contract calls, printing the gas breakdown is a little bit more complex, you can refer to `bench/__tests__/test-deploy-contract.ava.js` for the recipe. +To add your benchmark, write a one function contract of your most expensive operation. And write a test to call this function. If it doesn't involve cross contract call or promises, creating such test is simple. You can refer to `bench/src/expensive-calc.js` and `bench/__tests__/test-expensive-calc.ava.js` on how to write such test and print the gas breakdown. If it involves create promises or cross contract calls, printing the gas breakdown is a little bit more complex, you can refer to `bench/__tests__/test-deploy-contract.ava.js` for the recipe. ## Details of size benchmark ### JS Contract From 8d6d6e481b05445c2799600219a6a4d99f3d9d16 Mon Sep 17 00:00:00 2001 From: Bo Yao Date: Fri, 10 Feb 2023 14:23:02 +0800 Subject: [PATCH 07/10] fix test --- bench/__tests__/test-lowlevel-api.ava.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/bench/__tests__/test-lowlevel-api.ava.js b/bench/__tests__/test-lowlevel-api.ava.js index a11c9b8a..bd3d2886 100644 --- a/bench/__tests__/test-lowlevel-api.ava.js +++ b/bench/__tests__/test-lowlevel-api.ava.js @@ -59,15 +59,3 @@ test("JS lowlevel API contract, call many", async (t) => { t.is(r.result.status.SuccessValue, ""); logGasDetail(r, t) }); - -test("JS lowlevel API contract, write different", async (t) => { - const { bob, lowlevelContract } = t.context.accounts; - let r = await bob.callRaw( - lowlevelContract, - "lowlevel_storage_write_different", - "" - ); - - t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) -}); \ No newline at end of file From 3646ab48c15c4bf2751d2376a8e4726a11e66b3d Mon Sep 17 00:00:00 2001 From: Bo Yao Date: Mon, 13 Feb 2023 11:34:35 +0800 Subject: [PATCH 08/10] mac runner is flaky on concurrent tests, build only --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9b96a9ac..de61afc2 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -38,3 +38,4 @@ jobs: run: test -z "$(git status --porcelain)" - name: Run tests run: pnpm test + if: matrix.os == 'ubuntu-latest' From 7575e548ab701eb333186b7e86439e16a224e710 Mon Sep 17 00:00:00 2001 From: Bo Yao Date: Tue, 14 Feb 2023 14:17:25 +0800 Subject: [PATCH 09/10] address Serhii comments --- bench/README.md | 447 ----------------- .../test-highlevel-collection.ava.js | 70 --- bench/__tests__/util.js | 31 -- bench/src/deploy-contract.js | 19 - bench/src/lowlevel-api.js | 20 - {bench => benchmark}/.gitignore | 0 benchmark/README.md | 457 ++++++++++++++++++ .../__tests__/test-deploy-contract.ava.js | 10 +- .../__tests__/test-expensive-calc.ava.js | 0 .../test-highlevel-collection.ava.js | 72 +++ .../__tests__/test-highlevel-minimal.ava.js | 43 +- .../__tests__/test-lowlevel-api.ava.js | 44 +- .../__tests__/test-lowlevel-minimal.ava.js | 35 +- benchmark/__tests__/util.js | 49 ++ {bench => benchmark}/ava.config.cjs | 0 {bench => benchmark}/example-outcome.json | 10 +- {bench => benchmark}/jsconfig.json | 0 {bench => benchmark}/package.json | 1 - {bench => benchmark}/res/deploy_contract.wasm | Bin {bench => benchmark}/res/expensive_calc.wasm | Bin .../res/highlevel_collection.wasm | Bin .../res/highlevel_minimal.wasm | Bin {bench => benchmark}/res/lowlevel_api.wasm | Bin .../res/lowlevel_minimal.wasm | Bin benchmark/src/deploy-contract.js | 19 + {bench => benchmark}/src/expensive-calc.js | 6 +- .../src/highlevel-collection.js | 0 {bench => benchmark}/src/highlevel-minimal.js | 2 +- benchmark/src/lowlevel-api.js | 20 + {bench => benchmark}/src/lowlevel-minimal.js | 3 +- {bench => benchmark}/tsconfig.json | 0 pnpm-workspace.yaml | 2 +- 32 files changed, 693 insertions(+), 667 deletions(-) delete mode 100644 bench/README.md delete mode 100644 bench/__tests__/test-highlevel-collection.ava.js delete mode 100644 bench/__tests__/util.js delete mode 100644 bench/src/deploy-contract.js delete mode 100644 bench/src/lowlevel-api.js rename {bench => benchmark}/.gitignore (100%) create mode 100644 benchmark/README.md rename {bench => benchmark}/__tests__/test-deploy-contract.ava.js (97%) rename {bench => benchmark}/__tests__/test-expensive-calc.ava.js (100%) create mode 100644 benchmark/__tests__/test-highlevel-collection.ava.js rename {bench => benchmark}/__tests__/test-highlevel-minimal.ava.js (55%) rename {bench => benchmark}/__tests__/test-lowlevel-api.ava.js (65%) rename {bench => benchmark}/__tests__/test-lowlevel-minimal.ava.js (67%) create mode 100644 benchmark/__tests__/util.js rename {bench => benchmark}/ava.config.cjs (100%) rename {bench => benchmark}/example-outcome.json (94%) rename {bench => benchmark}/jsconfig.json (100%) rename {bench => benchmark}/package.json (99%) rename {bench => benchmark}/res/deploy_contract.wasm (100%) rename {bench => benchmark}/res/expensive_calc.wasm (100%) rename {bench => benchmark}/res/highlevel_collection.wasm (100%) rename {bench => benchmark}/res/highlevel_minimal.wasm (100%) rename {bench => benchmark}/res/lowlevel_api.wasm (100%) rename {bench => benchmark}/res/lowlevel_minimal.wasm (100%) create mode 100644 benchmark/src/deploy-contract.js rename {bench => benchmark}/src/expensive-calc.js (72%) rename {bench => benchmark}/src/highlevel-collection.js (100%) rename {bench => benchmark}/src/highlevel-minimal.js (98%) create mode 100644 benchmark/src/lowlevel-api.js rename {bench => benchmark}/src/lowlevel-minimal.js (56%) rename {bench => benchmark}/tsconfig.json (100%) diff --git a/bench/README.md b/bench/README.md deleted file mode 100644 index 2cbe9585..00000000 --- a/bench/README.md +++ /dev/null @@ -1,447 +0,0 @@ -# Gas and size benchmark compare to NEAR-SDK-RS - -## Summary -NEAR-SDK-JS bundles a bytecode VM with the contract bytecode to a wasm file. Currently, the bytecode VM is the QuickJS runtime with interface to NEAR and the contract bytecode is compiled from JavaScript source code with QuickJS Compiler (QJSC). - -This results in: -- Size of a minimal contract is 500K, which is also the size of the bytecode VM. -- Bytecode is more compact than wasm. Complex contract in JS adds less bytes to the equivalent wasm compiled from Rust, but due to the initial 500K size, the result contract is still bigger and within same order of magnitude: several hundred KB. -- For contract that bottlenecks at calling the host functions are using similar gas in JS and Rust. -- For contract that does a lot of computation in JS, the JS bytecode uses significantly more gas. -- For a real world contract, if it doesn't including complex logic in JavaScript, it's usually sufficient, consider the complexity of the near contract standards. -- For more complex logic, We suggest to bench the most expensive contract call, including most complex path of cross contract calls, to determine whether it fits 300T Gas limit. - - -## Detailed gas benchmark - -### A minimal contract - -- RS lowlevel minimal contract - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 2.43T - - CONTRACT_LOADING_BASE : 0.00004T - - CONTRACT_LOADING_BYTES : 0.00005T - - Gas used to refund unused gas: 0.22318T - - Total gas used: 5.08T -- JS lowlevel minimal contract - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 7.07T - - CONTRACT_LOADING_BASE : 0.00004T - - CONTRACT_LOADING_BYTES : 0.11132T - - WASM_INSTRUCTION : 4.53T - - Gas used to refund unused gas: 0.22318T - - Total gas used: 9.72T - -In the very minimal contract the JS adds about `1.8T` gas. The major difference is loading the QuickJS VM and near-sdk-js uses 4.53T Gas. The 500K contract loading just adds 0.1T Gas. - -### A highlevel minimal contract (using nearbindgen) -- highlevel-minimal.ava › RS highlevel minimal contract - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 2.63T - - BASE : 0.79G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 35.46G - - READ_CACHED_TRIE_NODE : 4.56G - - READ_MEMORY_BASE : 7.83G - - READ_MEMORY_BYTE : 0.04G - - STORAGE_READ_BASE : 56.36G - - STORAGE_READ_KEY_BYTE : 0.15G - - STORAGE_WRITE_BASE : 64.2G - - STORAGE_WRITE_KEY_BYTE : 0.35G - - TOUCHING_TRIE_NODE : 32.2G - - WASM_INSTRUCTION : 0.46G - - WRITE_MEMORY_BASE : 2.8G - - WRITE_MEMORY_BYTE : 0.04G - - Gas used to refund unused gas: 223.18G - - Total gas used: 5.28T -- highlevel-minimal.ava › JS highlevel minimal contract - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 8.39T - - BASE : 1.59G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 112.03G - - READ_CACHED_TRIE_NODE : 6.84G - - READ_MEMORY_BASE : 7.83G - - READ_MEMORY_BYTE : 0.05G - - READ_REGISTER_BASE : 2.52G - - READ_REGISTER_BYTE : 0G - - STORAGE_READ_BASE : 56.36G - - STORAGE_READ_KEY_BYTE : 0.15G - - STORAGE_WRITE_BASE : 64.2G - - STORAGE_WRITE_KEY_BYTE : 0.35G - - STORAGE_WRITE_VALUE_BYTE : 0.06G - - TOUCHING_TRIE_NODE : 48.31G - - WASM_INSTRUCTION : 5.66T - - WRITE_MEMORY_BASE : 5.61G - - WRITE_MEMORY_BYTE : 0.05G - - WRITE_REGISTER_BASE : 2.87G - - WRITE_REGISTER_BYTE : 0.01G - - Gas used to refund unused gas: 223.18G - - Total gas used: 11.05T - -JS `@NearBindgen` is more expensive, the major difference is in `WASM_INSTRUCTION`, because `@NearBindgen` does some class, object manipulation work, but Rust `near_bindgen` is a compile time code generation macro. Deduct the 4.5T loading VM and near-sdk-js, it's about 1T gas overhead. - -### Low level API - -- RS lowlevel API contract - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 2.53T - - BASE : 0.00026T - - CONTRACT_LOADING_BASE : 0.00004T - - CONTRACT_LOADING_BYTES : 0.00008T - - READ_MEMORY_BASE : 0.00522T - - READ_MEMORY_BYTE : 0.00008T - - STORAGE_WRITE_BASE : 0.0642T - - STORAGE_WRITE_KEY_BYTE : 0.0007T - - STORAGE_WRITE_VALUE_BYTE : 0.00031T - - TOUCHING_TRIE_NODE : 0.0322T - - WASM_INSTRUCTION : 0.00002T - - Gas used to refund unused gas: 0.22318T - - Total gas used: 5.18T -- JS lowlevel API contract - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 7.8T - - BASE : 0.00026T - - CONTRACT_LOADING_BASE : 0.00004T - - CONTRACT_LOADING_BYTES : 0.11119T - - READ_MEMORY_BASE : 0.00522T - - READ_MEMORY_BYTE : 0.00008T - - STORAGE_WRITE_BASE : 0.0642T - - STORAGE_WRITE_EVICTED_BYTE : 0.00032T - - STORAGE_WRITE_KEY_BYTE : 0.0007T - - STORAGE_WRITE_VALUE_BYTE : 0.00031T - - TOUCHING_TRIE_NODE : 0.09661T - - WASM_INSTRUCTION : 5.09T - - WRITE_REGISTER_BASE : 0.00287T - - WRITE_REGISTER_BYTE : 0.00004T - - Gas used to refund unused gas: 0.22318T - - Total gas used: 10.45T -- JS lowlevel API contract, call many - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 8.47T - - BASE : 0.00265T - - CONTRACT_LOADING_BASE : 0.00004T - - CONTRACT_LOADING_BYTES : 0.11119T - - READ_MEMORY_BASE : 0.0522T - - READ_MEMORY_BYTE : 0.00076T - - STORAGE_WRITE_BASE : 0.64197T - - STORAGE_WRITE_EVICTED_BYTE : 0.00289T - - STORAGE_WRITE_KEY_BYTE : 0.00705T - - STORAGE_WRITE_VALUE_BYTE : 0.0031T - - TOUCHING_TRIE_NODE : 0.04831T - - WASM_INSTRUCTION : 5.14T - - WRITE_REGISTER_BASE : 0.02579T - - WRITE_REGISTER_BYTE : 0.00034T - - Gas used to refund unused gas: 0.22318T - - Total gas used: 11.12T - -In this case, JS lowlevel API contract uses same gas in the storage write API part (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). The major excessive gas is due to the overhead of initialize QuickJS VM and loading near-sdk-js. We can see this more obviously by calling storage write for 10 times ("call many tests" in above). - -### Highlevel collection -- RS highlevel collection contract - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 3.32T - - BASE : 3.18G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 70.94G - - READ_CACHED_TRIE_NODE : 95.76G - - READ_MEMORY_BASE : 26.1G - - READ_MEMORY_BYTE : 1.87G - - READ_REGISTER_BASE : 5.03G - - READ_REGISTER_BYTE : 0.03G - - STORAGE_READ_BASE : 112.71G - - STORAGE_READ_KEY_BYTE : 3.44G - - STORAGE_READ_VALUE_BYTE : 0.19G - - STORAGE_WRITE_BASE : 256.79G - - STORAGE_WRITE_EVICTED_BYTE : 1.09G - - STORAGE_WRITE_KEY_BYTE : 9.23G - - STORAGE_WRITE_VALUE_BYTE : 7.75G - - TOUCHING_TRIE_NODE : 257.63G - - WASM_INSTRUCTION : 16.36G - - WRITE_MEMORY_BASE : 8.41G - - WRITE_MEMORY_BYTE : 0.74G - - WRITE_REGISTER_BASE : 8.6G - - WRITE_REGISTER_BYTE : 1.1G - - Gas used to refund unused gas: 223.18G - - Total gas used: 5.97T -- JS highlevel collection contract - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 10.06T - - BASE : 2.91G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 113.46G - - READ_CACHED_TRIE_NODE : 72.96G - - READ_MEMORY_BASE : 20.88G - - READ_MEMORY_BYTE : 2G - - READ_REGISTER_BASE : 5.03G - - READ_REGISTER_BYTE : 0.03G - - STORAGE_READ_BASE : 112.71G - - STORAGE_READ_KEY_BYTE : 3.31G - - STORAGE_READ_VALUE_BYTE : 0.53G - - STORAGE_WRITE_BASE : 192.59G - - STORAGE_WRITE_EVICTED_BYTE : 3.02G - - STORAGE_WRITE_KEY_BYTE : 7.96G - - STORAGE_WRITE_VALUE_BYTE : 9.49G - - TOUCHING_TRIE_NODE : 209.33G - - WASM_INSTRUCTION : 6.86T - - WRITE_MEMORY_BASE : 8.41G - - WRITE_MEMORY_BYTE : 0.9G - - WRITE_REGISTER_BASE : 8.6G - - WRITE_REGISTER_BYTE : 1.55G - - Gas used to refund unused gas: 223.18G - - Total gas used: 12.71T - -JS SDK's collection has about 1T overhead, deduct the 4.5T VM/near-sdk-js loading and 1T `@NearBindgen`. Note this benches the most complicated `UnorderedMap`, which gas usage is strictly greater than the other collections. And the gas used in actual writing the collection to storage is similar (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). - -### Computational expensive contract - - JS expensive contract, iterate 20000 times - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 123.26T - - BASE : 1.85G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 112.09G - - READ_CACHED_TRIE_NODE : 4.56G - - READ_MEMORY_BASE : 10.44G - - READ_MEMORY_BYTE : 0.07G - - READ_REGISTER_BASE : 2.52G - - READ_REGISTER_BYTE : 0G - - STORAGE_READ_BASE : 56.36G - - STORAGE_READ_KEY_BYTE : 0.15G - - STORAGE_WRITE_BASE : 64.2G - - STORAGE_WRITE_KEY_BYTE : 0.35G - - STORAGE_WRITE_VALUE_BYTE : 0.06G - - TOUCHING_TRIE_NODE : 32.2G - - WASM_INSTRUCTION : 120.54T - - WRITE_MEMORY_BASE : 5.61G - - WRITE_MEMORY_BYTE : 0.07G - - WRITE_REGISTER_BASE : 2.87G - - WRITE_REGISTER_BYTE : 0.04G - - Gas used to refund unused gas: 223.18G - - Total gas used: 125.91T - - RS expensive contract. iterate 20000 times - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 3.01T - - BASE : 1.85G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 67.77G - - READ_CACHED_TRIE_NODE : 6.84G - - READ_MEMORY_BASE : 10.44G - - READ_MEMORY_BYTE : 0.06G - - READ_REGISTER_BASE : 2.52G - - READ_REGISTER_BYTE : 0G - - STORAGE_READ_BASE : 56.36G - - STORAGE_READ_KEY_BYTE : 0.15G - - STORAGE_WRITE_BASE : 64.2G - - STORAGE_WRITE_KEY_BYTE : 0.35G - - TOUCHING_TRIE_NODE : 48.31G - - WASM_INSTRUCTION : 315.17G - - WRITE_MEMORY_BASE : 5.61G - - WRITE_MEMORY_BYTE : 0.07G - - WRITE_REGISTER_BASE : 2.87G - - WRITE_REGISTER_BYTE : 0.04G - - Gas used to refund unused gas: 223.18G - - Total gas used: 5.66T - - RS expensive contract. iterate 10000 times - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 2.9T - - BASE : 2.38G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 67.77G - - READ_CACHED_TRIE_NODE : 13.68G - - READ_MEMORY_BASE : 10.44G - - READ_MEMORY_BYTE : 0.06G - - READ_REGISTER_BASE : 5.03G - - READ_REGISTER_BYTE : 0G - - STORAGE_READ_BASE : 56.36G - - STORAGE_READ_KEY_BYTE : 0.15G - - STORAGE_WRITE_BASE : 64.2G - - STORAGE_WRITE_KEY_BYTE : 0.35G - - TOUCHING_TRIE_NODE : 80.51G - - WASM_INSTRUCTION : 158.89G - - WRITE_MEMORY_BASE : 8.41G - - WRITE_MEMORY_BYTE : 0.07G - - WRITE_REGISTER_BASE : 8.6G - - WRITE_REGISTER_BYTE : 0.04G - - Gas used to refund unused gas: 223.18G - - Total gas used: 5.56T - - RS expensive contract. iterate 100 times - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 2.75T - - BASE : 2.38G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 67.77G - - READ_CACHED_TRIE_NODE : 13.68G - - READ_MEMORY_BASE : 10.44G - - READ_MEMORY_BYTE : 0.05G - - READ_REGISTER_BASE : 5.03G - - READ_REGISTER_BYTE : 0G - - STORAGE_READ_BASE : 56.36G - - STORAGE_READ_KEY_BYTE : 0.15G - - STORAGE_WRITE_BASE : 64.2G - - STORAGE_WRITE_KEY_BYTE : 0.35G - - TOUCHING_TRIE_NODE : 80.51G - - WASM_INSTRUCTION : 4.02G - - WRITE_MEMORY_BASE : 8.41G - - WRITE_MEMORY_BYTE : 0.07G - - WRITE_REGISTER_BASE : 8.6G - - WRITE_REGISTER_BYTE : 0.03G - - Gas used to refund unused gas: 223.18G - - Total gas used: 5.4T - - JS expensive contract, iterate 100 times - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 9.09T - - BASE : 2.38G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 112.09G - - READ_CACHED_TRIE_NODE : 13.68G - - READ_MEMORY_BASE : 10.44G - - READ_MEMORY_BYTE : 0.06G - - READ_REGISTER_BASE : 5.03G - - READ_REGISTER_BYTE : 0G - - STORAGE_READ_BASE : 56.36G - - STORAGE_READ_KEY_BYTE : 0.15G - - STORAGE_READ_VALUE_BYTE : 0.01G - - STORAGE_WRITE_BASE : 64.2G - - STORAGE_WRITE_EVICTED_BYTE : 0.06G - - STORAGE_WRITE_KEY_BYTE : 0.35G - - STORAGE_WRITE_VALUE_BYTE : 0.06G - - TOUCHING_TRIE_NODE : 80.51G - - WASM_INSTRUCTION : 6.3T - - WRITE_MEMORY_BASE : 8.41G - - WRITE_MEMORY_BYTE : 0.07G - - WRITE_REGISTER_BASE : 8.6G - - WRITE_REGISTER_BYTE : 0.05G - - Gas used to refund unused gas: 223.18G - - Total gas used: 11.75T - - JS expensive contract, iterate 10000 times - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 65.94T - - BASE : 2.38G - - CONTRACT_LOADING_BASE : 0.04G - - CONTRACT_LOADING_BYTES : 112.09G - - READ_CACHED_TRIE_NODE : 13.68G - - READ_MEMORY_BASE : 10.44G - - READ_MEMORY_BYTE : 0.06G - - READ_REGISTER_BASE : 5.03G - - READ_REGISTER_BYTE : 0G - - STORAGE_READ_BASE : 56.36G - - STORAGE_READ_KEY_BYTE : 0.15G - - STORAGE_READ_VALUE_BYTE : 0.01G - - STORAGE_WRITE_BASE : 64.2G - - STORAGE_WRITE_EVICTED_BYTE : 0.06G - - STORAGE_WRITE_KEY_BYTE : 0.35G - - STORAGE_WRITE_VALUE_BYTE : 0.06G - - TOUCHING_TRIE_NODE : 80.51G - - WASM_INSTRUCTION : 63.15T - - WRITE_MEMORY_BASE : 8.41G - - WRITE_MEMORY_BYTE : 0.08G - - WRITE_REGISTER_BASE : 8.6G - - WRITE_REGISTER_BYTE : 0.06G - - Gas used to refund unused gas: 223.18G - - Total gas used: 68.59T - -In this case, JS uses much more gas. Because JS Number is object and that's a lot of overhead compare to native integer arithmetic. It's even a lot of overhead compare to native float arithmetic. Also in QuickJS there's no JIT. If your contract does a lot of calculation or complex algorithm in JavaScript, it'd be better to do a similar benchmark. - - -### Deploy and cross contract call -- JS promise batch deploy contract and call - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 25.86T - - CREATE_ACCOUNT : 0.09961T - - DEPLOY_CONTRACT : 3.71T - - FUNCTION_CALL : 2.32T - - NEW_RECEIPT : 0.10806T - - TRANSFER : 0.11512T - - BASE : 0.00159T - - CONTRACT_LOADING_BASE : 0.00004T - - CONTRACT_LOADING_BYTES : 0.22386T - - PROMISE_RETURN : 0.00056T - - READ_MEMORY_BASE : 0.01566T - - READ_MEMORY_BYTE : 1.97T - - UTF8_DECODING_BASE : 0.00311T - - UTF8_DECODING_BYTE : 0.00525T - - WASM_INSTRUCTION : 14.86T - - Gas used to execute the cross contract call: 41.9T - - BASE : 0.00344T - - CONTRACT_LOADING_BASE : 0.00004T - - CONTRACT_LOADING_BYTES : 0.11228T - - READ_MEMORY_BASE : 0.00261T - - READ_MEMORY_BYTE : 0.0005T - - READ_REGISTER_BASE : 0.01007T - - READ_REGISTER_BYTE : 0T - - WASM_INSTRUCTION : 5.47T - - WRITE_MEMORY_BASE : 0.01122T - - WRITE_MEMORY_BYTE : 0.00014T - - WRITE_REGISTER_BASE : 0.01146T - - WRITE_REGISTER_BYTE : 0.00019T - - Gas used to refund unused gas for cross contract call: 0.22318T - - Gas used to refund unused gas: 0.22318T - - Total gas used: 70.63T - -- RS promise batch deploy contract and call - - Gas used to convert transaction to receipt: 2.43T - - Gas used to execute the receipt (actual contract call): 10.89T - - CREATE_ACCOUNT : 0.09961T - - DEPLOY_CONTRACT : 3.71T - - FUNCTION_CALL : 2.32T - - NEW_RECEIPT : 0.10806T - - TRANSFER : 0.11512T - - BASE : 0.00159T - - CONTRACT_LOADING_BASE : 0.00004T - - CONTRACT_LOADING_BYTES : 0.11283T - - PROMISE_RETURN : 0.00056T - - READ_MEMORY_BASE : 0.01566T - - READ_MEMORY_BYTE : 1.97T - - UTF8_DECODING_BASE : 0.00311T - - UTF8_DECODING_BYTE : 0.00525T - - WASM_INSTRUCTION : 0.00038T - - Gas used to execute the cross contract call: 41.9T - - BASE : 0.00344T - - CONTRACT_LOADING_BASE : 0.00004T - - CONTRACT_LOADING_BYTES : 0.11228T - - READ_MEMORY_BASE : 0.00261T - - READ_MEMORY_BYTE : 0.0005T - - READ_REGISTER_BASE : 0.01007T - - READ_REGISTER_BYTE : 0T - - WASM_INSTRUCTION : 5.47T - - WRITE_MEMORY_BASE : 0.01122T - - WRITE_MEMORY_BYTE : 0.00014T - - WRITE_REGISTER_BASE : 0.01146T - - WRITE_REGISTER_BYTE : 0.00019T - - Gas used to refund unused gas for cross contract call: 0.22318T - - Gas used to refund unused gas: 0.22318T - - Total gas used: 55.67T - -In this test, we use a JS contract and RS contract to both deploy a JS contract and cross contract call this newly deployed contract. We can see the gas to do the cross contract call is the same. JS SDK has a `~10T` overhead to parse a `~500K` contract in byte. This is because JS, either represent code in Uint8Array or string has some overhead while rust compiler can directly turn it into data section in wasm. In practice, a 10T overhead for a one time contract deploy is not a big deal. - -## Tips to do your own benchmark - -If the above cases don't cover use case or you have a complex algorithm to implement in JavaScript, it's a good idea to benchmark your specific algorithm before choose near-sdk-js for your project. - -You don't have to implement the exact algorithm to estimate the gas usage. Instead, you can find out the most expensive execution path of the algorithm, and estimate it by using the upper bound. For example, store the biggest possible objects into the collection and iterate for most possible times. Then goes to write the benchmark and the total gas cannot be more than 300T to be a valid contract. Also, if it has cross contract call, make sure the total gas, that's a sum of all cross contract calls, is less than 300T. - -To add your benchmark, write a one function contract of your most expensive operation. And write a test to call this function. If it doesn't involve cross contract call or promises, creating such test is simple. You can refer to `bench/src/expensive-calc.js` and `bench/__tests__/test-expensive-calc.ava.js` on how to write such test and print the gas breakdown. If it involves create promises or cross contract calls, printing the gas breakdown is a little bit more complex, you can refer to `bench/__tests__/test-deploy-contract.ava.js` for the recipe. - -## Details of size benchmark -### JS Contract -``` - --rwxrwxr-x 1 bo bo 1009K Feb 9 10:49 ./build/deploy-contract.wasm --rwxrwxr-x 1 bo bo 506K Feb 8 12:11 ./build/expensive-calc.wasm --rwxrwxr-x 1 bo bo 512K Feb 7 15:57 ./build/highlevel-collection.wasm --rwxrwxr-x 1 bo bo 505K Feb 7 10:53 ./build/highlevel-minimal.wasm --rwxrwxr-x 1 bo bo 502K Feb 10 11:32 ./build/lowlevel-api.wasm --rwxrwxr-x 1 bo bo 502K Feb 10 11:47 ./build/lowlevel-minimal.wasm -``` - -### Rust Contract -``` --rwxrwxr-x 1 bo bo 509K Feb 10 10:02 ./res/deploy_contract.wasm --rwxrwxr-x 1 bo bo 306K Feb 8 12:18 ./res/expensive_calc.wasm --rwxrwxr-x 1 bo bo 320K Feb 8 11:26 ./res/highlevel_collection.wasm --rwxrwxr-x 1 bo bo 160K Feb 7 10:51 ./res/highlevel_minimal.wasm --rwxrwxr-x 1 bo bo 387 Feb 7 11:56 ./res/lowlevel_api.wasm --rwxrwxr-x 1 bo bo 219 Feb 7 10:33 ./res/lowlevel_minimal.wasm -``` -## Appendix -- Source code of the rust benchmark: https://github.com/near/sdk-rs-gas-benchmark diff --git a/bench/__tests__/test-highlevel-collection.ava.js b/bench/__tests__/test-highlevel-collection.ava.js deleted file mode 100644 index 49c98f15..00000000 --- a/bench/__tests__/test-highlevel-collection.ava.js +++ /dev/null @@ -1,70 +0,0 @@ -import { Worker } from "near-workspaces"; -import test from "ava"; -import {logGasDetail} from "./util.js"; - -test.before(async (t) => { - // Init the worker and start a Sandbox server - const worker = await Worker.init(); - - // Prepare sandbox for tests, create accounts, deploy contracts, etx. - const root = worker.rootAccount; - - // Deploy the test contract. - const highlevelContract = await root.devDeploy("build/highlevel-collection.wasm"); - const highlevelContractRs = await root.devDeploy("res/highlevel_collection.wasm"); - - // Test users - const ali = await root.createSubAccount("ali"); - const bob = await root.createSubAccount("bob"); - const carl = await root.createSubAccount("carl"); - - // Save state for test runs - t.context.worker = worker; - t.context.accounts = { root, highlevelContract, highlevelContractRs, ali, bob, carl }; -}); - - -test("JS highlevel collection contract", async (t) => { - const { bob, highlevelContract } = t.context.accounts; - let r = await bob.callRaw( - highlevelContract, - "set", - {key: 'a'.repeat(100), value: 'b'.repeat(100)} - ); - r = await bob.callRaw( - highlevelContract, - "set", - {key: 'b'.repeat(100), value: 'c'.repeat(100)} - ); - r = await bob.callRaw( - highlevelContract, - "set", - {key: 'c'.repeat(100), value: 'd'.repeat(100)} - ); - - - t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) -}); - -test("RS highlevel collection contract", async (t) => { - const { bob, highlevelContractRs } = t.context.accounts; - let r = await bob.callRaw( - highlevelContractRs, - "set", - {key: 'a'.repeat(100), value: 'b'.repeat(100)} - ); - r = await bob.callRaw( - highlevelContractRs, - "set", - {key: 'b'.repeat(100), value: 'c'.repeat(100)} - ); - r = await bob.callRaw( - highlevelContractRs, - "set", - {key: 'c'.repeat(100), value: 'd'.repeat(100)} -); - t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) -}); - \ No newline at end of file diff --git a/bench/__tests__/util.js b/bench/__tests__/util.js deleted file mode 100644 index 38edb3e9..00000000 --- a/bench/__tests__/util.js +++ /dev/null @@ -1,31 +0,0 @@ -export function formatGas(gas) { - if (gas < 10 ** 12) { - let tGas = gas / 10**12 - let roundTGas = Math.round(tGas * 100000) / 100000 - return roundTGas + 'T' - } - let tGas = gas / 10**12 - let roundTGas = Math.round(tGas * 100) / 100 - return roundTGas + 'T' -} - -export function gasBreakdown(outcome) { - return new Map(outcome.metadata.gas_profile.map(g => { - return [g.cost, Number(g.gas_used)] - })); -} - -export function logGasBreakdown(map, t) { - map.forEach((v, k) => { - t.log(' ', k, ': ', formatGas(v)) - }); -} - -export function logGasDetail(r, t) { - t.log('Gas used to convert transaction to receipt: ', formatGas(r.result.transaction_outcome.outcome.gas_burnt)) - t.log('Gas used to execute the receipt (actual contract call): ', formatGas(r.result.receipts_outcome[0].outcome.gas_burnt)) - let map = gasBreakdown(r.result.receipts_outcome[0].outcome) - logGasBreakdown(map, t); - t.log('Gas used to refund unused gas: ', formatGas(r.result.receipts_outcome[1].outcome.gas_burnt)) - t.log('Total gas used: ', formatGas(r.result.transaction_outcome.outcome.gas_burnt+r.result.receipts_outcome[0].outcome.gas_burnt+r.result.receipts_outcome[1].outcome.gas_burnt)) -} \ No newline at end of file diff --git a/bench/src/deploy-contract.js b/bench/src/deploy-contract.js deleted file mode 100644 index 802a19cb..00000000 --- a/bench/src/deploy-contract.js +++ /dev/null @@ -1,19 +0,0 @@ -import {near} from 'near-sdk-js'; - -export function deploy_contract() { - let promiseId = near.promiseBatchCreate("a.caller.test.near"); - near.promiseBatchActionCreateAccount(promiseId); - near.promiseBatchActionTransfer(promiseId, 10000000000000000000000000n); - near.promiseBatchActionDeployContract( - promiseId, - includeBytes("../../tests/build/promise_api.wasm") - ); - near.promiseBatchActionFunctionCall( - promiseId, - "cross_contract_callee", - "abc", - 0, - 2 * Math.pow(10, 13) - ); - near.promiseReturn(promiseId); - } \ No newline at end of file diff --git a/bench/src/lowlevel-api.js b/bench/src/lowlevel-api.js deleted file mode 100644 index 51bfc462..00000000 --- a/bench/src/lowlevel-api.js +++ /dev/null @@ -1,20 +0,0 @@ -import { near } from "near-sdk-js"; - -export function lowlevel_storage_write() { - let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); - near.storageWriteRaw(data, data); -} - -export function lowlevel_storage_write_many() { - let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); - near.storageWriteRaw(data, data); - near.storageWriteRaw(data, data); - near.storageWriteRaw(data, data); - near.storageWriteRaw(data, data); - near.storageWriteRaw(data, data); - near.storageWriteRaw(data, data); - near.storageWriteRaw(data, data); - near.storageWriteRaw(data, data); - near.storageWriteRaw(data, data); - near.storageWriteRaw(data, data); -} diff --git a/bench/.gitignore b/benchmark/.gitignore similarity index 100% rename from bench/.gitignore rename to benchmark/.gitignore diff --git a/benchmark/README.md b/benchmark/README.md new file mode 100644 index 00000000..a17199dc --- /dev/null +++ b/benchmark/README.md @@ -0,0 +1,457 @@ +# Gas and size benchmark compare to NEAR-SDK-RS + +## Summary + +NEAR-SDK-JS bundles a bytecode VM with the contract bytecode to a wasm file. Currently, the bytecode VM is the QuickJS runtime with interface to NEAR and the contract bytecode is compiled from JavaScript source code with QuickJS Compiler (QJSC). + +This results in: + +- Size of a minimal contract is 500K, which is also the size of the bytecode VM. +- Bytecode is more compact than wasm. Complex contract in JS adds less bytes to the equivalent wasm compiled from Rust, but due to the initial 500K size, the result contract is still bigger and within same order of magnitude: several hundred KB. +- For contract that bottlenecks at calling the host functions are using similar gas in JS and Rust. +- For contract that does a lot of computation in JS, the JS bytecode uses significantly more gas. +- For a real world contract, if it doesn't including complex logic in JavaScript, it's usually sufficient, consider the complexity of the near contract standards. +- For more complex logic, We suggest to bench the most expensive contract call, including most complex path of cross contract calls, to determine whether it fits 300T Gas limit. + +## Detailed gas benchmark + +### A minimal contract + +- RS lowlevel minimal contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.43T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.00005T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 5.08T +- JS lowlevel minimal contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 7.07T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11132T + - WASM_INSTRUCTION : 4.53T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 9.72T + +In the very minimal contract the JS adds about `1.8T` gas. The major difference is loading the QuickJS VM and near-sdk-js uses 4.53T Gas. The 500K contract loading just adds 0.1T Gas. + +### A highlevel minimal contract (using nearbindgen) + +- highlevel-minimal.ava › RS highlevel minimal contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.63T + - BASE : 0.79G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 35.46G + - READ_CACHED_TRIE_NODE : 4.56G + - READ_MEMORY_BASE : 7.83G + - READ_MEMORY_BYTE : 0.04G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - TOUCHING_TRIE_NODE : 32.2G + - WASM_INSTRUCTION : 0.46G + - WRITE_MEMORY_BASE : 2.8G + - WRITE_MEMORY_BYTE : 0.04G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.28T +- highlevel-minimal.ava › JS highlevel minimal contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 8.39T + - BASE : 1.59G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 112.03G + - READ_CACHED_TRIE_NODE : 6.84G + - READ_MEMORY_BASE : 7.83G + - READ_MEMORY_BYTE : 0.05G + - READ_REGISTER_BASE : 2.52G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - STORAGE_WRITE_VALUE_BYTE : 0.06G + - TOUCHING_TRIE_NODE : 48.31G + - WASM_INSTRUCTION : 5.66T + - WRITE_MEMORY_BASE : 5.61G + - WRITE_MEMORY_BYTE : 0.05G + - WRITE_REGISTER_BASE : 2.87G + - WRITE_REGISTER_BYTE : 0.01G + - Gas used to refund unused gas: 223.18G + - Total gas used: 11.05T + +JS `@NearBindgen` is more expensive, the major difference is in `WASM_INSTRUCTION`, because `@NearBindgen` does some class, object manipulation work, but Rust `near_bindgen` is a compile time code generation macro. Deduct the 4.5T loading VM and near-sdk-js, it's about 1T gas overhead. + +### Low level API + +- RS lowlevel API contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.53T + - BASE : 0.00026T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.00008T + - READ_MEMORY_BASE : 0.00522T + - READ_MEMORY_BYTE : 0.00008T + - STORAGE_WRITE_BASE : 0.0642T + - STORAGE_WRITE_KEY_BYTE : 0.0007T + - STORAGE_WRITE_VALUE_BYTE : 0.00031T + - TOUCHING_TRIE_NODE : 0.0322T + - WASM_INSTRUCTION : 0.00002T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 5.18T +- JS lowlevel API contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 7.8T + - BASE : 0.00026T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11119T + - READ_MEMORY_BASE : 0.00522T + - READ_MEMORY_BYTE : 0.00008T + - STORAGE_WRITE_BASE : 0.0642T + - STORAGE_WRITE_EVICTED_BYTE : 0.00032T + - STORAGE_WRITE_KEY_BYTE : 0.0007T + - STORAGE_WRITE_VALUE_BYTE : 0.00031T + - TOUCHING_TRIE_NODE : 0.09661T + - WASM_INSTRUCTION : 5.09T + - WRITE_REGISTER_BASE : 0.00287T + - WRITE_REGISTER_BYTE : 0.00004T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 10.45T +- JS lowlevel API contract, call many + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 8.47T + - BASE : 0.00265T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11119T + - READ_MEMORY_BASE : 0.0522T + - READ_MEMORY_BYTE : 0.00076T + - STORAGE_WRITE_BASE : 0.64197T + - STORAGE_WRITE_EVICTED_BYTE : 0.00289T + - STORAGE_WRITE_KEY_BYTE : 0.00705T + - STORAGE_WRITE_VALUE_BYTE : 0.0031T + - TOUCHING_TRIE_NODE : 0.04831T + - WASM_INSTRUCTION : 5.14T + - WRITE_REGISTER_BASE : 0.02579T + - WRITE_REGISTER_BYTE : 0.00034T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 11.12T + +In this case, JS lowlevel API contract uses same gas in the storage write API part (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). The major excessive gas is due to the overhead of initialize QuickJS VM and loading near-sdk-js. We can see this more obviously by calling storage write for 10 times ("call many tests" in above). + +### Highlevel collection + +- RS highlevel collection contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 3.32T + - BASE : 3.18G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 70.94G + - READ_CACHED_TRIE_NODE : 95.76G + - READ_MEMORY_BASE : 26.1G + - READ_MEMORY_BYTE : 1.87G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0.03G + - STORAGE_READ_BASE : 112.71G + - STORAGE_READ_KEY_BYTE : 3.44G + - STORAGE_READ_VALUE_BYTE : 0.19G + - STORAGE_WRITE_BASE : 256.79G + - STORAGE_WRITE_EVICTED_BYTE : 1.09G + - STORAGE_WRITE_KEY_BYTE : 9.23G + - STORAGE_WRITE_VALUE_BYTE : 7.75G + - TOUCHING_TRIE_NODE : 257.63G + - WASM_INSTRUCTION : 16.36G + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.74G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 1.1G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.97T +- JS highlevel collection contract + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 10.06T + - BASE : 2.91G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 113.46G + - READ_CACHED_TRIE_NODE : 72.96G + - READ_MEMORY_BASE : 20.88G + - READ_MEMORY_BYTE : 2G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0.03G + - STORAGE_READ_BASE : 112.71G + - STORAGE_READ_KEY_BYTE : 3.31G + - STORAGE_READ_VALUE_BYTE : 0.53G + - STORAGE_WRITE_BASE : 192.59G + - STORAGE_WRITE_EVICTED_BYTE : 3.02G + - STORAGE_WRITE_KEY_BYTE : 7.96G + - STORAGE_WRITE_VALUE_BYTE : 9.49G + - TOUCHING_TRIE_NODE : 209.33G + - WASM_INSTRUCTION : 6.86T + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.9G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 1.55G + - Gas used to refund unused gas: 223.18G + - Total gas used: 12.71T + +JS SDK's collection has about 1T overhead, deduct the 4.5T VM/near-sdk-js loading and 1T `@NearBindgen`. Note this benches the most complicated `UnorderedMap`, which gas usage is strictly greater than the other collections. And the gas used in actual writing the collection to storage is similar (`STORAGE_WRITE_BASE` / `STORAGE_WRITE_KEY_BYTE` / `STORAGE_WRITE_VALUE_BYTE` ). + +### Computational expensive contract + +- JS expensive contract, iterate 20000 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 123.26T + - BASE : 1.85G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 112.09G + - READ_CACHED_TRIE_NODE : 4.56G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.07G + - READ_REGISTER_BASE : 2.52G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - STORAGE_WRITE_VALUE_BYTE : 0.06G + - TOUCHING_TRIE_NODE : 32.2G + - WASM_INSTRUCTION : 120.54T + - WRITE_MEMORY_BASE : 5.61G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 2.87G + - WRITE_REGISTER_BYTE : 0.04G + - Gas used to refund unused gas: 223.18G + - Total gas used: 125.91T +- RS expensive contract. iterate 20000 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 3.01T + - BASE : 1.85G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 67.77G + - READ_CACHED_TRIE_NODE : 6.84G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.06G + - READ_REGISTER_BASE : 2.52G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - TOUCHING_TRIE_NODE : 48.31G + - WASM_INSTRUCTION : 315.17G + - WRITE_MEMORY_BASE : 5.61G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 2.87G + - WRITE_REGISTER_BYTE : 0.04G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.66T +- RS expensive contract. iterate 10000 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.9T + - BASE : 2.38G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 67.77G + - READ_CACHED_TRIE_NODE : 13.68G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.06G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - TOUCHING_TRIE_NODE : 80.51G + - WASM_INSTRUCTION : 158.89G + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 0.04G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.56T +- RS expensive contract. iterate 100 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 2.75T + - BASE : 2.38G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 67.77G + - READ_CACHED_TRIE_NODE : 13.68G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.05G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - TOUCHING_TRIE_NODE : 80.51G + - WASM_INSTRUCTION : 4.02G + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 0.03G + - Gas used to refund unused gas: 223.18G + - Total gas used: 5.4T +- JS expensive contract, iterate 100 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 9.09T + - BASE : 2.38G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 112.09G + - READ_CACHED_TRIE_NODE : 13.68G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.06G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_READ_VALUE_BYTE : 0.01G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_EVICTED_BYTE : 0.06G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - STORAGE_WRITE_VALUE_BYTE : 0.06G + - TOUCHING_TRIE_NODE : 80.51G + - WASM_INSTRUCTION : 6.3T + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.07G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 0.05G + - Gas used to refund unused gas: 223.18G + - Total gas used: 11.75T +- JS expensive contract, iterate 10000 times + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 65.94T + - BASE : 2.38G + - CONTRACT_LOADING_BASE : 0.04G + - CONTRACT_LOADING_BYTES : 112.09G + - READ_CACHED_TRIE_NODE : 13.68G + - READ_MEMORY_BASE : 10.44G + - READ_MEMORY_BYTE : 0.06G + - READ_REGISTER_BASE : 5.03G + - READ_REGISTER_BYTE : 0G + - STORAGE_READ_BASE : 56.36G + - STORAGE_READ_KEY_BYTE : 0.15G + - STORAGE_READ_VALUE_BYTE : 0.01G + - STORAGE_WRITE_BASE : 64.2G + - STORAGE_WRITE_EVICTED_BYTE : 0.06G + - STORAGE_WRITE_KEY_BYTE : 0.35G + - STORAGE_WRITE_VALUE_BYTE : 0.06G + - TOUCHING_TRIE_NODE : 80.51G + - WASM_INSTRUCTION : 63.15T + - WRITE_MEMORY_BASE : 8.41G + - WRITE_MEMORY_BYTE : 0.08G + - WRITE_REGISTER_BASE : 8.6G + - WRITE_REGISTER_BYTE : 0.06G + - Gas used to refund unused gas: 223.18G + - Total gas used: 68.59T + +In this case, JS uses much more gas. Because JS Number is object and that's a lot of overhead compare to native integer arithmetic. It's even a lot of overhead compare to native float arithmetic. Also in QuickJS there's no JIT. If your contract does a lot of calculation or complex algorithm in JavaScript, it'd be better to do a similar benchmark. + +### Deploy and cross contract call + +- JS promise batch deploy contract and call + + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 25.86T + - CREATE_ACCOUNT : 0.09961T + - DEPLOY_CONTRACT : 3.71T + - FUNCTION_CALL : 2.32T + - NEW_RECEIPT : 0.10806T + - TRANSFER : 0.11512T + - BASE : 0.00159T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.22386T + - PROMISE_RETURN : 0.00056T + - READ_MEMORY_BASE : 0.01566T + - READ_MEMORY_BYTE : 1.97T + - UTF8_DECODING_BASE : 0.00311T + - UTF8_DECODING_BYTE : 0.00525T + - WASM_INSTRUCTION : 14.86T + - Gas used to execute the cross contract call: 41.9T + - BASE : 0.00344T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11228T + - READ_MEMORY_BASE : 0.00261T + - READ_MEMORY_BYTE : 0.0005T + - READ_REGISTER_BASE : 0.01007T + - READ_REGISTER_BYTE : 0T + - WASM_INSTRUCTION : 5.47T + - WRITE_MEMORY_BASE : 0.01122T + - WRITE_MEMORY_BYTE : 0.00014T + - WRITE_REGISTER_BASE : 0.01146T + - WRITE_REGISTER_BYTE : 0.00019T + - Gas used to refund unused gas for cross contract call: 0.22318T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 70.63T + +- RS promise batch deploy contract and call + - Gas used to convert transaction to receipt: 2.43T + - Gas used to execute the receipt (actual contract call): 10.89T + - CREATE_ACCOUNT : 0.09961T + - DEPLOY_CONTRACT : 3.71T + - FUNCTION_CALL : 2.32T + - NEW_RECEIPT : 0.10806T + - TRANSFER : 0.11512T + - BASE : 0.00159T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11283T + - PROMISE_RETURN : 0.00056T + - READ_MEMORY_BASE : 0.01566T + - READ_MEMORY_BYTE : 1.97T + - UTF8_DECODING_BASE : 0.00311T + - UTF8_DECODING_BYTE : 0.00525T + - WASM_INSTRUCTION : 0.00038T + - Gas used to execute the cross contract call: 41.9T + - BASE : 0.00344T + - CONTRACT_LOADING_BASE : 0.00004T + - CONTRACT_LOADING_BYTES : 0.11228T + - READ_MEMORY_BASE : 0.00261T + - READ_MEMORY_BYTE : 0.0005T + - READ_REGISTER_BASE : 0.01007T + - READ_REGISTER_BYTE : 0T + - WASM_INSTRUCTION : 5.47T + - WRITE_MEMORY_BASE : 0.01122T + - WRITE_MEMORY_BYTE : 0.00014T + - WRITE_REGISTER_BASE : 0.01146T + - WRITE_REGISTER_BYTE : 0.00019T + - Gas used to refund unused gas for cross contract call: 0.22318T + - Gas used to refund unused gas: 0.22318T + - Total gas used: 55.67T + +In this test, we use a JS contract and RS contract to both deploy a JS contract and cross contract call this newly deployed contract. We can see the gas to do the cross contract call is the same. JS SDK has a `~10T` overhead to parse a `~500K` contract in byte. This is because JS, either represent code in Uint8Array or string has some overhead while rust compiler can directly turn it into data section in wasm. In practice, a 10T overhead for a one time contract deploy is not a big deal. + +## Tips to do your own benchmark + +If the above cases don't cover use case or you have a complex algorithm to implement in JavaScript, it's a good idea to benchmark your specific algorithm before choose near-sdk-js for your project. + +You don't have to implement the exact algorithm to estimate the gas usage. Instead, you can find out the most expensive execution path of the algorithm, and estimate it by using the upper bound. For example, store the biggest possible objects into the collection and iterate for most possible times. Then goes to write the benchmark and the total gas cannot be more than 300T to be a valid contract. Also, if it has cross contract call, make sure the total gas, that's a sum of all cross contract calls, is less than 300T. + +To add your benchmark, write a one function contract of your most expensive operation. And write a test to call this function. If it doesn't involve cross contract call or promises, creating such test is simple. You can refer to `bench/src/expensive-calc.js` and `bench/__tests__/test-expensive-calc.ava.js` on how to write such test and print the gas breakdown. If it involves create promises or cross contract calls, printing the gas breakdown is a little bit more complex, you can refer to `bench/__tests__/test-deploy-contract.ava.js` for the recipe. + +## Details of size benchmark + +### JS Contract + +``` + +-rwxrwxr-x 1 bo bo 1009K Feb 9 10:49 ./build/deploy-contract.wasm +-rwxrwxr-x 1 bo bo 506K Feb 8 12:11 ./build/expensive-calc.wasm +-rwxrwxr-x 1 bo bo 512K Feb 7 15:57 ./build/highlevel-collection.wasm +-rwxrwxr-x 1 bo bo 505K Feb 7 10:53 ./build/highlevel-minimal.wasm +-rwxrwxr-x 1 bo bo 502K Feb 10 11:32 ./build/lowlevel-api.wasm +-rwxrwxr-x 1 bo bo 502K Feb 10 11:47 ./build/lowlevel-minimal.wasm +``` + +### Rust Contract + +``` +-rwxrwxr-x 1 bo bo 509K Feb 10 10:02 ./res/deploy_contract.wasm +-rwxrwxr-x 1 bo bo 306K Feb 8 12:18 ./res/expensive_calc.wasm +-rwxrwxr-x 1 bo bo 320K Feb 8 11:26 ./res/highlevel_collection.wasm +-rwxrwxr-x 1 bo bo 160K Feb 7 10:51 ./res/highlevel_minimal.wasm +-rwxrwxr-x 1 bo bo 387 Feb 7 11:56 ./res/lowlevel_api.wasm +-rwxrwxr-x 1 bo bo 219 Feb 7 10:33 ./res/lowlevel_minimal.wasm +``` + +## Appendix + +- Source code of the rust benchmark: https://github.com/near/sdk-rs-gas-benchmark diff --git a/bench/__tests__/test-deploy-contract.ava.js b/benchmark/__tests__/test-deploy-contract.ava.js similarity index 97% rename from bench/__tests__/test-deploy-contract.ava.js rename to benchmark/__tests__/test-deploy-contract.ava.js index c66453d3..cbbafffc 100644 --- a/bench/__tests__/test-deploy-contract.ava.js +++ b/benchmark/__tests__/test-deploy-contract.ava.js @@ -31,7 +31,14 @@ test.before(async (t) => { // Save state for test runs t.context.worker = worker; - t.context.accounts = { root, callerContract, ali, bob, carl, callerContractRs }; + t.context.accounts = { + root, + callerContract, + ali, + bob, + carl, + callerContractRs, + }; }); test("JS promise batch deploy contract and call", async (t) => { @@ -85,7 +92,6 @@ test("JS promise batch deploy contract and call", async (t) => { ); }); - test("RS promise batch deploy contract and call", async (t) => { const { bob, callerContractRs } = t.context.accounts; diff --git a/bench/__tests__/test-expensive-calc.ava.js b/benchmark/__tests__/test-expensive-calc.ava.js similarity index 100% rename from bench/__tests__/test-expensive-calc.ava.js rename to benchmark/__tests__/test-expensive-calc.ava.js diff --git a/benchmark/__tests__/test-highlevel-collection.ava.js b/benchmark/__tests__/test-highlevel-collection.ava.js new file mode 100644 index 00000000..70c74d3e --- /dev/null +++ b/benchmark/__tests__/test-highlevel-collection.ava.js @@ -0,0 +1,72 @@ +import { Worker } from "near-workspaces"; +import test from "ava"; +import { logGasDetail } from "./util.js"; + +test.before(async (t) => { + // Init the worker and start a Sandbox server + const worker = await Worker.init(); + + // Prepare sandbox for tests, create accounts, deploy contracts, etx. + const root = worker.rootAccount; + + // Deploy the test contract. + const highlevelContract = await root.devDeploy( + "build/highlevel-collection.wasm" + ); + const highlevelContractRs = await root.devDeploy( + "res/highlevel_collection.wasm" + ); + + // Test users + const ali = await root.createSubAccount("ali"); + const bob = await root.createSubAccount("bob"); + const carl = await root.createSubAccount("carl"); + + // Save state for test runs + t.context.worker = worker; + t.context.accounts = { + root, + highlevelContract, + highlevelContractRs, + ali, + bob, + carl, + }; +}); + +test("JS highlevel collection contract", async (t) => { + const { bob, highlevelContract } = t.context.accounts; + let r = await bob.callRaw(highlevelContract, "set", { + key: "a".repeat(100), + value: "b".repeat(100), + }); + r = await bob.callRaw(highlevelContract, "set", { + key: "b".repeat(100), + value: "c".repeat(100), + }); + r = await bob.callRaw(highlevelContract, "set", { + key: "c".repeat(100), + value: "d".repeat(100), + }); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t); +}); + +test("RS highlevel collection contract", async (t) => { + const { bob, highlevelContractRs } = t.context.accounts; + let r = await bob.callRaw(highlevelContractRs, "set", { + key: "a".repeat(100), + value: "b".repeat(100), + }); + r = await bob.callRaw(highlevelContractRs, "set", { + key: "b".repeat(100), + value: "c".repeat(100), + }); + r = await bob.callRaw(highlevelContractRs, "set", { + key: "c".repeat(100), + value: "d".repeat(100), + }); + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t); +}); diff --git a/bench/__tests__/test-highlevel-minimal.ava.js b/benchmark/__tests__/test-highlevel-minimal.ava.js similarity index 55% rename from bench/__tests__/test-highlevel-minimal.ava.js rename to benchmark/__tests__/test-highlevel-minimal.ava.js index dd364867..474dd5d0 100644 --- a/bench/__tests__/test-highlevel-minimal.ava.js +++ b/benchmark/__tests__/test-highlevel-minimal.ava.js @@ -1,6 +1,6 @@ import { Worker } from "near-workspaces"; import test from "ava"; -import {logGasDetail} from "./util.js"; +import { logGasDetail } from "./util.js"; test.before(async (t) => { // Init the worker and start a Sandbox server @@ -10,8 +10,12 @@ test.before(async (t) => { const root = worker.rootAccount; // Deploy the test contract. - const highlevelContract = await root.devDeploy("build/highlevel-minimal.wasm"); - const highlevelContractRs = await root.devDeploy("res/highlevel_minimal.wasm"); + const highlevelContract = await root.devDeploy( + "build/highlevel-minimal.wasm" + ); + const highlevelContractRs = await root.devDeploy( + "res/highlevel_minimal.wasm" + ); // Test users const ali = await root.createSubAccount("ali"); @@ -20,31 +24,28 @@ test.before(async (t) => { // Save state for test runs t.context.worker = worker; - t.context.accounts = { root, highlevelContract, highlevelContractRs, ali, bob, carl }; + t.context.accounts = { + root, + highlevelContract, + highlevelContractRs, + ali, + bob, + carl, + }; }); - test("JS highlevel minimal contract", async (t) => { - const { bob, highlevelContract } = t.context.accounts; - let r = await bob.callRaw( - highlevelContract, - "empty", - "" - ); - - t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) + const { bob, highlevelContract } = t.context.accounts; + let r = await bob.callRaw(highlevelContract, "empty", ""); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t); }); test("RS highlevel minimal contract", async (t) => { const { bob, highlevelContractRs } = t.context.accounts; - let r = await bob.callRaw( - highlevelContractRs, - "empty", - "" - ); + let r = await bob.callRaw(highlevelContractRs, "empty", ""); t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) + logGasDetail(r, t); }); - \ No newline at end of file diff --git a/bench/__tests__/test-lowlevel-api.ava.js b/benchmark/__tests__/test-lowlevel-api.ava.js similarity index 65% rename from bench/__tests__/test-lowlevel-api.ava.js rename to benchmark/__tests__/test-lowlevel-api.ava.js index bd3d2886..aeffa40e 100644 --- a/bench/__tests__/test-lowlevel-api.ava.js +++ b/benchmark/__tests__/test-lowlevel-api.ava.js @@ -1,6 +1,6 @@ import { Worker } from "near-workspaces"; import test from "ava"; -import {logGasDetail} from "./util.js"; +import { logGasDetail } from "./util.js"; test.before(async (t) => { // Init the worker and start a Sandbox server @@ -20,42 +20,40 @@ test.before(async (t) => { // Save state for test runs t.context.worker = worker; - t.context.accounts = { root, lowlevelContract, lowlevelContractRs, ali, bob, carl }; + t.context.accounts = { + root, + lowlevelContract, + lowlevelContractRs, + ali, + bob, + carl, + }; }); - test("JS lowlevel API contract", async (t) => { - const { bob, lowlevelContract } = t.context.accounts; - let r = await bob.callRaw( - lowlevelContract, - "lowlevel_storage_write", - "" - ); - - t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) + const { bob, lowlevelContract } = t.context.accounts; + let r = await bob.callRaw(lowlevelContract, "lowlevel_storage_write", ""); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t); }); test("RS lowlevel API contract", async (t) => { const { bob, lowlevelContractRs } = t.context.accounts; - let r = await bob.callRaw( - lowlevelContractRs, - "lowlevel_storage_write", - "" - ); + let r = await bob.callRaw(lowlevelContractRs, "lowlevel_storage_write", ""); t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) + logGasDetail(r, t); }); - + test("JS lowlevel API contract, call many", async (t) => { const { bob, lowlevelContract } = t.context.accounts; let r = await bob.callRaw( - lowlevelContract, - "lowlevel_storage_write_many", - "" + lowlevelContract, + "lowlevel_storage_write_many", + "" ); t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) + logGasDetail(r, t); }); diff --git a/bench/__tests__/test-lowlevel-minimal.ava.js b/benchmark/__tests__/test-lowlevel-minimal.ava.js similarity index 67% rename from bench/__tests__/test-lowlevel-minimal.ava.js rename to benchmark/__tests__/test-lowlevel-minimal.ava.js index 3573910a..cc169745 100644 --- a/bench/__tests__/test-lowlevel-minimal.ava.js +++ b/benchmark/__tests__/test-lowlevel-minimal.ava.js @@ -1,6 +1,6 @@ import { Worker } from "near-workspaces"; import test from "ava"; -import {logGasDetail} from "./util.js"; +import { logGasDetail } from "./util.js"; test.before(async (t) => { // Init the worker and start a Sandbox server @@ -20,31 +20,28 @@ test.before(async (t) => { // Save state for test runs t.context.worker = worker; - t.context.accounts = { root, lowlevelContract, lowlevelContractRs, ali, bob, carl }; + t.context.accounts = { + root, + lowlevelContract, + lowlevelContractRs, + ali, + bob, + carl, + }; }); - test("JS lowlevel minimal contract", async (t) => { - const { bob, lowlevelContract } = t.context.accounts; - let r = await bob.callRaw( - lowlevelContract, - "empty", - "" - ); - - t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) + const { bob, lowlevelContract } = t.context.accounts; + let r = await bob.callRaw(lowlevelContract, "empty", ""); + + t.is(r.result.status.SuccessValue, ""); + logGasDetail(r, t); }); test("RS lowlevel minimal contract", async (t) => { const { bob, lowlevelContractRs } = t.context.accounts; - let r = await bob.callRaw( - lowlevelContractRs, - "empty", - "" - ); + let r = await bob.callRaw(lowlevelContractRs, "empty", ""); t.is(r.result.status.SuccessValue, ""); - logGasDetail(r, t) + logGasDetail(r, t); }); - \ No newline at end of file diff --git a/benchmark/__tests__/util.js b/benchmark/__tests__/util.js new file mode 100644 index 00000000..c43f502c --- /dev/null +++ b/benchmark/__tests__/util.js @@ -0,0 +1,49 @@ +export function formatGas(gas) { + if (gas < 10 ** 12) { + let tGas = gas / 10 ** 12; + let roundTGas = Math.round(tGas * 100000) / 100000; + return roundTGas + "T"; + } + let tGas = gas / 10 ** 12; + let roundTGas = Math.round(tGas * 100) / 100; + return roundTGas + "T"; +} + +export function gasBreakdown(outcome) { + return new Map( + outcome.metadata.gas_profile.map((g) => { + return [g.cost, Number(g.gas_used)]; + }) + ); +} + +export function logGasBreakdown(map, t) { + map.forEach((v, k) => { + t.log(" ", k, ": ", formatGas(v)); + }); +} + +export function logGasDetail(r, t) { + t.log( + "Gas used to convert transaction to receipt: ", + formatGas(r.result.transaction_outcome.outcome.gas_burnt) + ); + t.log( + "Gas used to execute the receipt (actual contract call): ", + formatGas(r.result.receipts_outcome[0].outcome.gas_burnt) + ); + let map = gasBreakdown(r.result.receipts_outcome[0].outcome); + logGasBreakdown(map, t); + t.log( + "Gas used to refund unused gas: ", + formatGas(r.result.receipts_outcome[1].outcome.gas_burnt) + ); + t.log( + "Total gas used: ", + formatGas( + r.result.transaction_outcome.outcome.gas_burnt + + r.result.receipts_outcome[0].outcome.gas_burnt + + r.result.receipts_outcome[1].outcome.gas_burnt + ) + ); +} diff --git a/bench/ava.config.cjs b/benchmark/ava.config.cjs similarity index 100% rename from bench/ava.config.cjs rename to benchmark/ava.config.cjs diff --git a/bench/example-outcome.json b/benchmark/example-outcome.json similarity index 94% rename from bench/example-outcome.json rename to benchmark/example-outcome.json index da678031..4245cf77 100644 --- a/bench/example-outcome.json +++ b/benchmark/example-outcome.json @@ -28,9 +28,7 @@ ], "version": 1 }, - "receipt_ids": [ - "8FYdTYgNnz5jnCDFFHfbyrBVq5rp9beStZYjxjrXvQ5F" - ], + "receipt_ids": ["8FYdTYgNnz5jnCDFFHfbyrBVq5rp9beStZYjxjrXvQ5F"], "status": { "SuccessValue": "" }, @@ -90,9 +88,7 @@ "gas_profile": null, "version": 1 }, - "receipt_ids": [ - "7GaMgKm53Mv5hwimyLTQnxEvaacvSABHhhJXbQYFkiXi" - ], + "receipt_ids": ["7GaMgKm53Mv5hwimyLTQnxEvaacvSABHhhJXbQYFkiXi"], "status": { "SuccessReceiptId": "7GaMgKm53Mv5hwimyLTQnxEvaacvSABHhhJXbQYFkiXi" }, @@ -113,4 +109,4 @@ "rm": false, "refDir": null } -} \ No newline at end of file +} diff --git a/bench/jsconfig.json b/benchmark/jsconfig.json similarity index 100% rename from bench/jsconfig.json rename to benchmark/jsconfig.json diff --git a/bench/package.json b/benchmark/package.json similarity index 99% rename from bench/package.json rename to benchmark/package.json index 0a80a005..7b706545 100644 --- a/bench/package.json +++ b/benchmark/package.json @@ -19,7 +19,6 @@ "test:highlevel-collection": "ava __tests__/test-highlevel-collection.ava.js", "test:expensive-calc": "ava __tests__/test-expensive-calc.ava.js", "test:deploy-contract": "ava __tests__/test-deploy-contract.ava.js" - }, "author": "Near Inc ", "license": "Apache-2.0", diff --git a/bench/res/deploy_contract.wasm b/benchmark/res/deploy_contract.wasm similarity index 100% rename from bench/res/deploy_contract.wasm rename to benchmark/res/deploy_contract.wasm diff --git a/bench/res/expensive_calc.wasm b/benchmark/res/expensive_calc.wasm similarity index 100% rename from bench/res/expensive_calc.wasm rename to benchmark/res/expensive_calc.wasm diff --git a/bench/res/highlevel_collection.wasm b/benchmark/res/highlevel_collection.wasm similarity index 100% rename from bench/res/highlevel_collection.wasm rename to benchmark/res/highlevel_collection.wasm diff --git a/bench/res/highlevel_minimal.wasm b/benchmark/res/highlevel_minimal.wasm similarity index 100% rename from bench/res/highlevel_minimal.wasm rename to benchmark/res/highlevel_minimal.wasm diff --git a/bench/res/lowlevel_api.wasm b/benchmark/res/lowlevel_api.wasm similarity index 100% rename from bench/res/lowlevel_api.wasm rename to benchmark/res/lowlevel_api.wasm diff --git a/bench/res/lowlevel_minimal.wasm b/benchmark/res/lowlevel_minimal.wasm similarity index 100% rename from bench/res/lowlevel_minimal.wasm rename to benchmark/res/lowlevel_minimal.wasm diff --git a/benchmark/src/deploy-contract.js b/benchmark/src/deploy-contract.js new file mode 100644 index 00000000..b5a82fa3 --- /dev/null +++ b/benchmark/src/deploy-contract.js @@ -0,0 +1,19 @@ +import { near } from "near-sdk-js"; + +export function deploy_contract() { + let promiseId = near.promiseBatchCreate("a.caller.test.near"); + near.promiseBatchActionCreateAccount(promiseId); + near.promiseBatchActionTransfer(promiseId, 10000000000000000000000000n); + near.promiseBatchActionDeployContract( + promiseId, + includeBytes("../../tests/build/promise_api.wasm") + ); + near.promiseBatchActionFunctionCall( + promiseId, + "cross_contract_callee", + "abc", + 0, + 2 * Math.pow(10, 13) + ); + near.promiseReturn(promiseId); +} diff --git a/bench/src/expensive-calc.js b/benchmark/src/expensive-calc.js similarity index 72% rename from bench/src/expensive-calc.js rename to benchmark/src/expensive-calc.js index 1b0211bd..c5a18731 100644 --- a/bench/src/expensive-calc.js +++ b/benchmark/src/expensive-calc.js @@ -7,9 +7,9 @@ export class ExpensiveCalc { let ret = 0; let sign = 1; for (let i = 0; i < n; i++) { - ret += i * sign; - sign *= -1; + ret += i * sign; + sign *= -1; } - near.valueReturn(ret.toString()) + near.valueReturn(ret.toString()); } } diff --git a/bench/src/highlevel-collection.js b/benchmark/src/highlevel-collection.js similarity index 100% rename from bench/src/highlevel-collection.js rename to benchmark/src/highlevel-collection.js diff --git a/bench/src/highlevel-minimal.js b/benchmark/src/highlevel-minimal.js similarity index 98% rename from bench/src/highlevel-minimal.js rename to benchmark/src/highlevel-minimal.js index eb903401..f540e7ee 100644 --- a/bench/src/highlevel-minimal.js +++ b/benchmark/src/highlevel-minimal.js @@ -4,4 +4,4 @@ import { NearBindgen, call } from "near-sdk-js"; export class HighlevelMinimal { @call({}) empty({}) {} -} \ No newline at end of file +} diff --git a/benchmark/src/lowlevel-api.js b/benchmark/src/lowlevel-api.js new file mode 100644 index 00000000..b2e1ec55 --- /dev/null +++ b/benchmark/src/lowlevel-api.js @@ -0,0 +1,20 @@ +import { near } from "near-sdk-js"; + +export function lowlevel_storage_write() { + let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); + near.storageWriteRaw(data, data); +} + +export function lowlevel_storage_write_many() { + let data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); + near.storageWriteRaw(data, data); +} diff --git a/bench/src/lowlevel-minimal.js b/benchmark/src/lowlevel-minimal.js similarity index 56% rename from bench/src/lowlevel-minimal.js rename to benchmark/src/lowlevel-minimal.js index 31ba82ad..1611536f 100644 --- a/bench/src/lowlevel-minimal.js +++ b/benchmark/src/lowlevel-minimal.js @@ -1,4 +1,3 @@ import { near } from "near-sdk-js"; -export function empty() { -} \ No newline at end of file +export function empty() {} diff --git a/bench/tsconfig.json b/benchmark/tsconfig.json similarity index 100% rename from bench/tsconfig.json rename to benchmark/tsconfig.json diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index edae0ff6..27b8e651 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,4 +2,4 @@ packages: - "examples" - "tests" - "packages/*" - - "bench" \ No newline at end of file + - "benchmark" \ No newline at end of file From a7878ade0ef100d691ee83884694c2c2a625d88b Mon Sep 17 00:00:00 2001 From: Bo Yao Date: Tue, 14 Feb 2023 15:44:23 +0800 Subject: [PATCH 10/10] update pnpm lock --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d9ffab52..ff8c62c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,7 @@ importers: devDependencies: turbo: 1.6.3 - bench: + benchmark: specifiers: ava: ^4.2.0 near-sdk-js: workspace:*