From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id A19774CFD8 for <ffmpegdev@gitmailbox.com>; Tue, 15 Apr 2025 20:50:51 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D9E12687D4C; Tue, 15 Apr 2025 23:50:47 +0300 (EEST) Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5457B687C68 for <ffmpeg-devel@ffmpeg.org>; Tue, 15 Apr 2025 23:50:41 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id 96DF14397D for <ffmpeg-devel@ffmpeg.org>; Tue, 15 Apr 2025 20:50:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=niedermayer.cc; s=gm1; t=1744750240; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=ru8FILdyQXAoBfdZ3bXvCGRHo0BtnRZ4fxcrIBzZd8M=; b=GpFm45o/OH+LqVZ7T3TCAqMfXyGUYT5UFrFpDOhM8titSSlNNENFJ0pKWjcy9zn2a5SQ2d hjsdej6pxkzY9DmmhHC8aqX4az6iyz5u//oWSy1xu05jMTTOa6jHlIAJYPgAaytM+z4UY0 774DJi03u3mzqnmfKLvg9GUpfvL1AJnYaAUJbTSAha+d6p2FQbEc7T6N2DQR7aAQZGBoQh 6yfNaNshN8oEy14blTYFLJfVM/OhQX9N1TVC11W3kwvlLiIjmn9gjhEME4P9yeQWTlMCYw Qu6BYU2IHK5xluVFoPrc+AzxfPPGwijRwRmOfs8qNg5GMMS1lEFsaPg/q42cEg== From: Michael Niedermayer <michael@niedermayer.cc> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Date: Tue, 15 Apr 2025 22:50:39 +0200 Message-ID: <20250415205039.537639-1-michael@niedermayer.cc> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-GND-State: clean X-GND-Score: -70 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvvdeghedtucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenfghrlhcuvffnffculdeftddmnecujfgurhephffvufffkffoggfgsedtkeertdertddtnecuhfhrohhmpefoihgthhgrvghlucfpihgvuggvrhhmrgihvghruceomhhitghhrggvlhesnhhivgguvghrmhgrhigvrhdrtggtqeenucggtffrrghtthgvrhhnpefhledvvdehgfettdefueevtdeifffhkeeljeetjeeugfelgfffieduheevvefgvdenucfkphepgedurdeiiedrieejrdduudefnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepgedurdeiiedrieejrdduudefpdhhvghloheplhhotggrlhhhohhsthdpmhgrihhlfhhrohhmpehmihgthhgrvghlsehnihgvuggvrhhmrgihvghrrdgttgdpnhgspghrtghpthhtohepuddprhgtphhtthhopehffhhmphgvghdquggvvhgvlhesfhhfmhhpvghgrdhorhhg X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH v3] [NOT for git] avutil/tests/map: benchmark code [BENCHMARK included] X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250415205039.537639-1-michael@niedermayer.cc/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> 1000 entries variable bytes at location 4-5 4809796 decicycles in av_map_add, 512 runs, 0 skips 3457756 decicycles in av_map_get, 512 runs, 0 skips 153482370 decicycles in av_dict_set, 512 runs, 0 skips 150045088 decicycles in av_dict_get, 512 runs, 0 skips 100 entries variable bytes at location 4-5 307603 decicycles in av_map_add, 512 runs, 0 skips 207432 decicycles in av_map_get, 512 runs, 0 skips 1743433 decicycles in av_dict_set, 512 runs, 0 skips 1609130 decicycles in av_dict_get, 512 runs, 0 skips 10 entries variable bytes at location 4-5 20084 decicycles in av_map_add, 512 runs, 0 skips 11145 decicycles in av_map_get, 512 runs, 0 skips 45788 decicycles in av_dict_set, 512 runs, 0 skips 21217 decicycles in av_dict_get, 512 runs, 0 skips 5 entries variable bytes at location 4-5 9476 decicycles in av_map_add, 512 runs, 0 skips 4427 decicycles in av_map_get, 512 runs, 0 skips 19873 decicycles in av_dict_set, 512 runs, 0 skips 5404 decicycles in av_dict_get, 512 runs, 0 skips 3 entries variable bytes at location 4-5 5695 decicycles in av_map_add, 512 runs, 0 skips 2553 decicycles in av_map_get, 512 runs, 0 skips 11035 decicycles in av_dict_set, 511 runs, 1 skips 2523 decicycles in av_dict_get, 512 runs, 0 skips 3 entries variable bytes at location 0-1 5496 decicycles in av_map_add, 512 runs, 0 skips 1939 decicycles in av_map_get, 512 runs, 0 skips 10867 decicycles in av_dict_set, 510 runs, 2 skips 1823 decicycles in av_dict_get, 512 runs, 0 skips 5 entries variable bytes at location 0-1 8228 decicycles in av_map_add, 512 runs, 0 skips 3297 decicycles in av_map_get, 512 runs, 0 skips 17767 decicycles in av_dict_set, 512 runs, 0 skips 3917 decicycles in av_dict_get, 512 runs, 0 skips 10 entries variable bytes at location 0-1 16691 decicycles in av_map_add, 511 runs, 1 skips 7220 decicycles in av_map_get, 512 runs, 0 skips 37575 decicycles in av_dict_set, 512 runs, 0 skips 11498 decicycles in av_dict_get, 512 runs, 0 skips 100 entries variable bytes at location 0-1 231734 decicycles in av_map_add, 512 runs, 0 skips 128690 decicycles in av_map_get, 512 runs, 0 skips 1017393 decicycles in av_dict_set, 512 runs, 0 skips 726464 decicycles in av_dict_get, 512 runs, 0 skips 1000 entries variable bytes at location 0-1 3857396 decicycles in av_map_add, 512 runs, 0 skips 2563465 decicycles in av_map_get, 512 runs, 0 skips 70277113 decicycles in av_dict_set, 512 runs, 0 skips 68152897 decicycles in av_dict_get, 512 runs, 0 skips Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavutil/tests/map.c | 57 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/libavutil/tests/map.c b/libavutil/tests/map.c index 38f0a153e68..90950769f98 100644 --- a/libavutil/tests/map.c +++ b/libavutil/tests/map.c @@ -26,6 +26,8 @@ #include "libavutil/mem.h" #include "libavutil/map.h" +#include "libavutil/timer.h" +#include "libavutil/dict.h" static void print_set(const AVMap *s) { @@ -37,6 +39,7 @@ static void print_set(const AVMap *s) int main(void) { +#if 0 void *our_cmp[] = { strcmp, av_map_strcmp_keyvalue, @@ -185,6 +188,60 @@ int main(void) av_map_free(&set); av_assert0(!set); } +#else +#define N_ENTRIES 1000 +#define P 4 + fprintf(stderr, "%d entries variable bytes at location %d-%d\n", N_ENTRIES, P, P+1); + for (int runs = 0; runs < 1000; runs++) { + AVMap *map = av_map_new(av_strcasecmp, NULL, NULL); + for(int pass = 0; pass < 2; pass++) { + START_TIMER + unsigned r = 5; + for(int i=0; i<N_ENTRIES; i++) { + r = r*123 + 7; + char str[7] = "TEST"; + str[P ] = r; + str[P+1] = r>>8; + if(pass == 0) { + av_map_add(map, str, 7, str, 7, 0); + } else { + av_map_get(map, str, av_strcasecmp); + } + } + if (pass) { + STOP_TIMER("av_map_get") + } else { + STOP_TIMER("av_map_add") + } + } + av_map_free(&map); + } + + for (int runs = 0; runs < 1000; runs++) { + AVDictionary *dict = NULL; + for(int pass = 0; pass < 2; pass++) { + START_TIMER + unsigned r = 5; + for(int i=0; i<N_ENTRIES; i++) { + r = r*123 + 7; + char str[7] = "TEST"; + str[P ] = r; + str[P+1] = r>>8; + if(pass == 0) { + av_dict_set(&dict, str, str, 0); + } else { + av_dict_get(dict, str, NULL, 0); + } + } + if (pass) { + STOP_TIMER("av_dict_get") + } else { + STOP_TIMER("av_dict_set") + } + } + av_dict_free(&dict); + } +#endif return 0; } -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".