Skip to content

Commit

Permalink
add a simple benchmark setup
Browse files Browse the repository at this point in the history
  • Loading branch information
martinkuba committed Jul 21, 2023
1 parent 08943c6 commit 218e528
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 4 deletions.
15 changes: 15 additions & 0 deletions benchmark/benchmark.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
'use strict';

const Benchmark = require('benchmark');

Benchmark.options.maxTime = 0;
Benchmark.options.minSamples = 10;

module.exports = () => {
const suite = new Benchmark.Suite();

return suite
.on('cycle', event => {
console.log(String(event.target));
});
};
30 changes: 30 additions & 0 deletions benchmark/create-spans.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const benchmark = require('./benchmark');
const { BasicTracerProvider } = require('../packages/opentelemetry-sdk-trace-base/build/src');

var suite = benchmark()

const tracerProvider = new BasicTracerProvider();
const tracer = tracerProvider.getTracer('test')

suite
.add('1 span, 1 attribute, 1 event', function() {
const span = tracer.startSpan('span');
span.setAttribute('number', 1234)
span.addEvent('event1')
span.end()
})
.add('10 attributes', function() {
const span = tracer.startSpan('span');
span.setAttribute('aaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaa');
span.setAttribute('bbbbbbbbbbbbbbbbbbbb', 'aaaaaaaaaaaaaaaaaaaa');
span.setAttribute('cccccccccccccccccccc', 'aaaaaaaaaaaaaaaaaaaa');
span.setAttribute('dddddddddddddddddddd', 'aaaaaaaaaaaaaaaaaaaa');
span.setAttribute('eeeeeeeeeeeeeeeeeeee', 'aaaaaaaaaaaaaaaaaaaa');
span.setAttribute('ffffffffffffffffffff', 'aaaaaaaaaaaaaaaaaaaa');
span.setAttribute('gggggggggggggggggggg', 'aaaaaaaaaaaaaaaaaaaa');
span.setAttribute('hhhhhhhhhhhhhhhhhhhh', 'aaaaaaaaaaaaaaaaaaaa');
span.setAttribute('iiiiiiiiiiiiiiiiiiii', 'aaaaaaaaaaaaaaaaaaaa');
span.setAttribute('jjjjjjjjjjjjjjjjjjjj', 'aaaaaaaaaaaaaaaaaaaa');
span.end()
})
.run({ 'async': true });
2 changes: 2 additions & 0 deletions benchmark/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

require('./create-spans');
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,22 @@
"lint:markdown:fix": "./node_modules/.bin/markdownlint $(git ls-files '*.md') -i ./CHANGELOG.md --fix",
"reset": "lerna clean -y && rm -rf node_modules && npm i && npm run compile && npm run lint:fix",
"update-ts-configs": "node scripts/update-ts-configs.js",

"comment_prepare_1": "echo scripts in this section automatically prepare releases. Intended for use by maintainers only.",
"comment_prepare_2": "echo experimental preparation scripts only prepare experimental packages",
"prepare_release:experimental:patch": "npm run _check:no_changes && npm run _backup:lerna && npm run _lerna:remove_api && npm run _lerna:remove_stable && npm run _lerna:version_patch && npm run _restore:lerna",
"prepare_release:experimental:minor": "npm run _check:no_changes && npm run _backup:lerna && npm run _lerna:remove_api && npm run _lerna:remove_stable && npm run _lerna:version_minor && npm run _restore:lerna",
"comment_prepare_3": "echo sdk preparation scripts prepare all stable and experimental packages",
"prepare_release:sdk:patch": "npm run _check:no_changes && npm run _backup:lerna && npm run _lerna:remove_api && npm run _lerna:version_patch && npm run _restore:lerna",
"prepare_release:sdk:minor": "npm run _check:no_changes && npm run _backup:lerna && npm run _lerna:remove_api && npm run _lerna:version_minor && npm run _restore:lerna",

"comment_internal": "echo scripts below this line are for internal use",
"_check:no_changes": "if [ ! -z \"$(git status -uall --porcelain)\" ]; then echo Please ensure all changes are committed; exit 1; fi",
"_backup:lerna": "cp lerna.json lerna.json.backup",
"_restore:lerna": "mv lerna.json.backup lerna.json",
"_lerna:remove_api": "node -e 'var fs=require(\"fs\");var l=require(\"./lerna.json\");l.packages=l.packages.filter(p=>p!==\"api\");fs.writeFileSync(\"lerna.json\",JSON.stringify(l,null,2))'",
"_lerna:remove_stable": "node -e 'var fs=require(\"fs\");var l=require(\"./lerna.json\");l.packages=l.packages.filter(p=>p!==\"packages/*\");fs.writeFileSync(\"lerna.json\",JSON.stringify(l,null,2))'",
"_lerna:version_patch": "npx lerna version patch --exact --no-git-tag-version --no-push --yes",
"_lerna:version_minor": "npx lerna version minor --exact --no-git-tag-version --no-push --yes"
"_lerna:version_minor": "npx lerna version minor --exact --no-git-tag-version --no-push --yes",
"benchmark": "node benchmark | tee benchmarks.txt"
},
"repository": "open-telemetry/opentelemetry-js",
"keywords": [
Expand All @@ -63,16 +62,17 @@
"author": "OpenTelemetry Authors",
"license": "Apache-2.0",
"devDependencies": {
"@lerna/legacy-package-management": "7.1.3",
"@typescript-eslint/eslint-plugin": "5.59.11",
"@typescript-eslint/parser": "5.59.11",
"benchmark": "^2.1.4",
"eslint": "8.44.0",
"eslint-config-prettier": "8.5.0",
"eslint-plugin-header": "3.1.1",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-prettier": "4.2.1",
"gh-pages": "5.0.0",
"lerna": "7.1.3",
"@lerna/legacy-package-management": "7.1.3",
"linkinator": "5.0.1",
"markdownlint-cli": "0.35.0",
"prettier": "2.8.8",
Expand Down

0 comments on commit 218e528

Please sign in to comment.