feat: Update benchmarks (#386)

* feat: Update benchmarks

* fix: Improve blog

* feat: Add result files with 1 and 100 parallel clients

* fix: Add elasticsearch benchmark numbers from dbpedia 1M openai embeddings

* feat: Make mean time (latency) the default metric for the 2nd plot

* feat: Improve conclusions based on es results

* fix: Make charts work on changing dataset

* fix: Typo in table

* feat: Update results with quantization

* fix: Show a single graph to keep things simple

* fix: Improve words

* review fixes

* add link to open-source

* feat: Improve units to make results more readable

* fix: Small grammatical mistake

* fix: Make search threads value constant based on plot metric

* feat: Make dataset num vectors more readable

* fix: Spacing in table

* feat: Add results from the latest Redis benchmarks

* feat: Update benchmarks page

* feat: Update date and some of the points

* feat: Update benchmarks and content

* chores: Improve observations

* feat: Improve observations and put it after the graph

---------

Co-authored-by: generall <andrey@vasnetsov.com>
This commit is contained in:
Kumar Shivendu
2024-01-11 14:11:06 +00:00
committed by GitHub
co-authored by generall
parent 1ac5118071
commit 80f2b6f978
12 changed files with 42504 additions and 150 deletions
@@ -1,34 +1,33 @@
<div class="benchmark-wrapper">
<div class="benchmark-wrapper" id="benchmark-plot-wrapper-{{ .Params.id }}">
<label for="datasets-selector-{{ .Params.id }}">Dataset:</label>
<select name="datasets" id="datasets-selector-{{ .Params.id }}" onchange="renderSelected('{{ .Params.id }}')">
</select>
<label for="parallel-selector-{{ .Params.id }}">Search threads:</label>
<select name="parallel" id="parallel-selector-{{ .Params.id }}" onchange="renderSelected('{{ .Params.id }}')">
<select disabled name="parallel" id="parallel-selector-{{ .Params.id }}" onchange="renderSelected('{{ .Params.id }}')">
</select>
Plot values:
<!-- Radio button group to select values to render -->
<label>
<input checked type="radio" name="plot-value-{{ .Params.id }}" value="rps" onclick="renderSelected('{{ .Params.id }}', this.value)"/>
<input type="radio" name="plot-value-{{ .Params.id }}" value="rps" onclick="document.getElementById('parallel-selector-{{ .Params.id }}').value = 100; renderSelected('{{ .Params.id }}', this.value)"/>
RPS
</label> |
<label>
<input type="radio" name="plot-value-{{ .Params.id }}" value="mean_time" onclick="renderSelected('{{ .Params.id }}', this.value)"/>
<input type="radio" name="plot-value-{{ .Params.id }}" value="mean_time" onclick="document.getElementById('parallel-selector-{{ .Params.id }}').value = 1; renderSelected('{{ .Params.id }}', this.value)"/>
Latency
</label> |
<label>
<input type="radio" name="plot-value-{{ .Params.id }}" value="p95_time" onclick="renderSelected('{{ .Params.id }}', this.value)"/>
<input type="radio" name="plot-value-{{ .Params.id }}" value="p95_time" onclick="document.getElementById('parallel-selector-{{ .Params.id }}').value = 1; renderSelected('{{ .Params.id }}', this.value)"/>
p95 latency
</label> |
<label>
<input type="radio" name="plot-value-{{ .Params.id }}" value="total_upload_time" onclick="renderSelected('{{ .Params.id }}', this.value)"/>
<input type="radio" name="plot-value-{{ .Params.id }}" value="total_upload_time" onclick="document.getElementById('parallel-selector-{{ .Params.id }}').value = 100; renderSelected('{{ .Params.id }}', this.value)"/>
Index time
</label>
@@ -58,6 +57,8 @@
let precisionSelector = document.getElementById("precision-selector-{{ .Params.id }}");
let metricRadioSelector = document.getElementsByName("plot-value-{{ .Params.id }}");
const config = {
type: 'line',
data: {
@@ -120,6 +121,14 @@
let parallelsInt = parseInt(parallels[0]);
for (const row in data) {
for (const column in columnMultiplyFactor) {
if (column in data[row]) {
data[row][column] *= columnMultiplyFactor[column];
}
}
}
let selectedData = filterData(data, {
"dataset_name": datasets[0],
"parallel": parallelsInt
@@ -128,9 +137,16 @@
window.datasets = { "{{ .Params.id }}": data, ...window.datasets }
window.charts = { "{{ .Params.id }}": chart, ...window.charts }
let plotValueRadioBtns = document.getElementsByName("plot-value-{{ .Params.id }}");
plotValueRadioBtns.forEach(btn => {
if (btn.value === '{{ .Params.metric }}') {
btn.checked = true;
}
});
renderSelected("{{ .Params.id }}");
// Chart js set min x value
});
</script>
</script>