Comments (2)
Some thoughts on this.
In the short term, we should increase the warm-up and iteration numbers to make sure the results become stable.
in the long term,
-
We should compare the new commit not only to the most recent one but also to the average value from the past months to prevent unnoticed false negatives from occurring.
-
We also need to reduce the noise caused by the machine. Currently, we only run performance regression detection on Ubuntu but we plan to add other OSs in the future. To ensure more consistent benchmark results on Linux, we can control factors such as CPU affinity - https://easyperf.net/blog/2019/08/02/Perf-measurement-environment-on-Linux
-
We should create more specific files that target specific data models. For example, if a new commit introduces changes that impact the speed of string serialization, it can be hard to find. By having files that include numerous test cases for Ion string values, we can magnify this regression and easily detect it.
-
We can also mimic JMH (Java Microbenchmark Harness) and implement another warm-up mode based on"clock time" instead of "execution numbers" which ensures that the benchmark-cli warm up for a specific duration. For example, instead of executing the specific benchmark code 20 times, we warm up the benchmark-cli for 20 minutes.
from ion-python.
Few TODOs:
- We can measure the percentile of the benchmark results - https://learn.microsoft.com/en-us/previous-versions/msp-n-p/bb924370(v=pandp.10)
- We can try running each command for both previous and current commits together and see if it has less variance (currently we are running all commands for each commit each time).
from ion-python.
Related Issues (20)
- Missing symbol when loading ion: __ion_writer_add_annotation_sid_helper HOT 3
- ion-python-benchmark-cli's format conversion shouldn't always copy the input file
- Benchmark CLI `compare` can have inaccurate results for some metrics
- Ion Python Benchmark results display with "false precision"
- Decide which Python interpreters should be included in the performance testing workflow
- Pydantic support HOT 3
- Some IonPyDict Methods Behave Like Python 2 Dict
- 4 tests in `test_benchmark_cli.py` failed. HOT 1
- Ion Python's documentation needs to be improved HOT 1
- Improving IonPyObject Construction
- Soft-fail on ImportError when importing c libs HOT 1
- DEPRECATION: amazon.ion is being installed using the legacy 'setup.py install' method HOT 1
- Benchmark results report doesn't support `tabulate` on Windows.
- GHA windows build test doesn't work with python 3.8
- Improve Python Error Handling from ioncmodule
- Symbols lack SIds when C-extension is enabled HOT 2
- Benchmark-cli `IO-type=buffer` should support benchmarking multiple top_level objects
- Benchmark-cli protobuf multiple top level objects use case HOT 1
- Test Pipeline need to support the latest python version 3.12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ion-python.