Numbers are scores for specific handler/test cases.
Scores are comprised of benchmark speed and memory usage data
mapped onto a 0..100 range. Higher is better.
Numbers are scores for specific handler/test cases.
Scores are comprised of benchmark speed and memory usage data
mapped onto a 0..100 range. Higher is better.
Higher numbers are better on both axes. The "good" zone is the upper right and the "bad" zone is the lower left.
Scoring Algorithms
The algorithms behind the scores shown on this page are somewhat arbitrary.
The original scoring algorithm (Default) was deemed "good enough",
but later work has focused on enabling multiple scoring algorithms.
These can be found on the Home page or
in the Scoring drop-down in the upper right section of every page.
Algorithms are implemented by "scorekeepers".
Each scorekeeper is specified by the two axes shown in the scoring chart.
Each axis interprets test data according to its own algorithm.
The current scorekeeper and axis algorithms are described below:
Score Keeper: Size
The Size scoring algorithm is basically the same as the Default algorithm.
Only the handlers shown in the chart is changed.
The intention of this scorekeeper was to see if there were some handlers that worked
better for logging smaller items vs some that were optimized for logging larger items.
The Size score chart graphs various slog handlers by "small" vs. "large" tests.
Each handler is scored for a set of small tests and separately for a set of large tests.
Handlers with a preference for one or the other will show up on the chart
as off of the main diagonal (0,0 → 100,100).
X Axis: Large
The X-axis for the Size scoring chart shows the score derived from verification warnings
for benchmarks with "large" log records.
The score is calculated using the score weights shown to the right
which are applied to the warning levels during calculation.
The benchmarks that are run to populate this axis are shown in the Included list to the right.
Handler benchmarks are scored based on several metrics on each of various tests.
Metrics are worth different amounts depending on what they are.
The weights applied during this process are shown on the right.
Source Data
Each combination of handler and test results in a single line of test output:
separate memory allocations per operation (1 allocs/op), and
estimated logging throughput per second (284.33 MB/s).
Benchmark Algorithm
For each handler/test combination (single line or test results)
we use one or more of the following three data items:
nanoseconds per operation,
memory bytes allocated per operation, and
separate memory allocations per operation.
These three items are combined over two steps.
First the test value ranges are acquired:
for each test
for each handler
for each of the three results described above
track the highest and lowest value for the test over all handlers
Then the test scores are calculated (this is the Original calculation):
for each handler
for each test
scorePerTest starts at zero
for each of the three results described above
convert the value to a fraction of
the range of values for the test from the previous step
scorePerTest = scorePerTest + weight(result) * 100.0 * the fraction
scorePerTest /= sum of weight(result)
scorePerHandler = average of scorePerTest for handler
Where the weight(result) comes from the predefined table shown above and to the right.
There is currently no weighting by test, all tests are considered equal.
Scores
Multiple scores are generated for each handler.
The main (or "default") score is shown in the data tables
with the column header Score with an associated checkbox.
The checkbox can be used to show several other "score" columns, as follows:
Default (Score)
This is the score that is shown in the overall chart
at the top of the page in the column labeled Benchmarks.
The default score is the average of the By Test and By Data scores.
By Test
This score is calculated by rolling up scores calculated per test.
By Data
This score is calculated by rolling up scores calculated per data item.
Original
This is the "original" score which has been overtaken by newer code.
The Original score is within 5% of by Data value.
Data
Weight
Nanoseconds
3
Alloc Bytes
2
Allocations
1
Included
Big Group
Logging
Y Axis: Small
The Y-axis for the Default scoring chart shows the score derived
for benchmarks with "small" log records.
The score is calculated using the score weights shown to the right
which are applied to the several specific benchmark result values.
The benchmarks that are run to populate this axis are the set of all benchmarks
minus the one(s) shown in the Excluded list to the right.
Handler benchmarks are scored based on several metrics on each of various tests.
Metrics are worth different amounts depending on what they are.
The weights applied during this process are shown on the right.
Source Data
Each combination of handler and test results in a single line of test output:
separate memory allocations per operation (1 allocs/op), and
estimated logging throughput per second (284.33 MB/s).
Benchmark Algorithm
For each handler/test combination (single line or test results)
we use one or more of the following three data items:
nanoseconds per operation,
memory bytes allocated per operation, and
separate memory allocations per operation.
These three items are combined over two steps.
First the test value ranges are acquired:
for each test
for each handler
for each of the three results described above
track the highest and lowest value for the test over all handlers
Then the test scores are calculated (this is the Original calculation):
for each handler
for each test
scorePerTest starts at zero
for each of the three results described above
convert the value to a fraction of
the range of values for the test from the previous step
scorePerTest = scorePerTest + weight(result) * 100.0 * the fraction
scorePerTest /= sum of weight(result)
scorePerHandler = average of scorePerTest for handler
Where the weight(result) comes from the predefined table shown above and to the right.
There is currently no weighting by test, all tests are considered equal.
Scores
Multiple scores are generated for each handler.
The main (or "default") score is shown in the data tables
with the column header Score with an associated checkbox.
The checkbox can be used to show several other "score" columns, as follows:
Default (Score)
This is the score that is shown in the overall chart
at the top of the page in the column labeled Benchmarks.
The default score is the average of the By Test and By Data scores.
By Test
This score is calculated by rolling up scores calculated per test.
By Data
This score is calculated by rolling up scores calculated per data item.
Original
This is the "original" score which has been overtaken by newer code.
The Original score is within 5% of by Data value.