From 2af9f68c5e1a8a3570970747e73bf3718d1f8e3c Mon Sep 17 00:00:00 2001 From: MrBounty Date: Mon, 4 Nov 2024 22:11:56 +0100 Subject: [PATCH] Added small benchmark --- Benchmark.md | 42 +++++++++++++++++++++++++++++++ charts/time_usage_per_thread.png | Bin 0 -> 33726 bytes 2 files changed, 42 insertions(+) create mode 100644 Benchmark.md create mode 100644 charts/time_usage_per_thread.png diff --git a/Benchmark.md b/Benchmark.md new file mode 100644 index 0000000..0759d6b --- /dev/null +++ b/Benchmark.md @@ -0,0 +1,42 @@ +***Benchmark a set to quicly evolve*** + +# Config + +# 50 000 000 users + +In this example I create a random dataset of 50 000 000 Users using this shema: +``` +TODO +``` + +Here a user example: +``` +run "ADD User (name = 'Diana Lopez',age = 2,email = 'allisonwilliams@example.org',scores=[37 85 90 71 88 85 68],friends = [],bday=1973/11/13,last_order=1979/07/18-15:05:26.590261,a_time=03:04:06.862213) +``` + +### Space on disk + +This take 6.24GB + +### Parse all data + +First let's do a query that parse all file but dont return anything, so we have the time to read and evaluate file but not writting and sending output. +``` +run "GRAB User {name = 'asdfqwer'} +``` + +#### Time per jobs + +| Thread | Time (s) | Usage (%) | +| --- | --- | --- | +| 1 | 40 | 10 | +| 2 | 21 | 18 | +| 3 | 15 | 25 | +| 4 | 12 | 30 | +| 6 | 8.3 | 45 | +| 8 | 6.6 | 55 | +| 12 | 5.1 | 85 | +| 16 | 4.3 | 100 | + +![alt text](https://github.com/MrBounty/ZipponDB/blob/main/charts/time_usage_per_thread.png) + diff --git a/charts/time_usage_per_thread.png b/charts/time_usage_per_thread.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d162a24e259813fcf11914d7dceb5ad11b445b GIT binary patch literal 33726 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