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 3D5414CDEB
	for <ffmpegdev@gitmailbox.com>; Mon, 14 Apr 2025 12:40:24 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8E9AA687C94;
	Mon, 14 Apr 2025 15:40:20 +0300 (EEST)
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02olkn2032.outbound.protection.outlook.com [40.92.44.32])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 733AB6879D2
 for <ffmpeg-devel@ffmpeg.org>; Mon, 14 Apr 2025 15:40:14 +0300 (EEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qyo5WLHuf0/brQYxFfmdN7Mp4AHellbJj9+H8deW/6eenmYtwrXvirGANIHtUNaT9uv4vdMbUS0ESBAGVb3ZH4Au8AQcycqgWsNQK2ujrGd2gRFqzTLC3t7cQzFRliE7YYw377jweFhOj1D3JmmptDXwParEfdvt6JBspSSpiklGJrW8o5C1gBjPERN/+9TBwmF3zXvkLsFkWB6qwsMJJDfGk6Ff7B0G3VrZeRO8wyFidSNHILKYeponV+gD2neG/w+PT81lgcxcp2msakD/+MTwl7DQREvxd4lKELrj+0uPIlIt4CSMAY4zm98nMkfnXrI+YQMqKtkcv71uPhYzTw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=tLB+WXp4dMdnLhhrUScjCN+Zgj54p4IccqXHU/1HLWo=;
 b=Lhw1sznYl+aRJm4psSGHJF1QuflSO5jZvpJRSrV2HgBNOQDDyuxX/bnkmm+HdPpo1EoXL7YmJI6towkcjoP3ScUzIvLtXBEQ0FonCcuXpRLEzcJkVOZjEE1Giodv/yhyxJflxH/LBkVnjXBXqeoqdl0ejNvx3q9jq0DJxPjJ6e+WvthOdoQkSJPhWEcI0oc5r/G40x6xrMgSg+U+uM0lrmNOgiglDKz/wLXNEI+yY6/ftp0y7y/pJx9VICzOwg1P/eDzPj5dbx+8l+BTNV3Ot8ZyB7qI0MXhiWXwe9d3BQ70zfEOmjWroyEhuN/cVueRCAjhPYcRwaK6anCqdZu5Kw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
 dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tLB+WXp4dMdnLhhrUScjCN+Zgj54p4IccqXHU/1HLWo=;
 b=i9Hy5WyYANDc94X1NCf9IxG1wtPWRzkunjb+iY06GpHacp92jRjyLr2NwT9UgRKtPdpRW42aGZYn2ZOsFuQa4jC2g50KTGzUBiDGUmBaFG1TZ+6TZT33WADbNNAgeQMAnLcrhMxADWcZBvYJXql4GAjX8yt/lZyOBjtthlrXdqHoKaIOwdIm3Gncqq4rMjbVNpJ5SLW4RHTDuFjXR7eji2gk/RbVgIBnS5/7IUY0l13CIAmzfftCrSWCmaRNba19u6JtI0haQjEKs0Vyw7I8f0CkeRwMqaFjEt1Ow0EMquX7agSdqi20Jg05a2lB5VSjm7m18982sbU+pJdLDhQKkQ==
Received: from BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM (2603:10b6:408:145::16)
 by DS4PPFAD6013C26.NAMP223.PROD.OUTLOOK.COM (2603:10b6:f:fc00::b7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Mon, 14 Apr
 2025 12:40:11 +0000
Received: from BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM
 ([fe80::c63a:275a:b3f4:fae9]) by BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM
 ([fe80::c63a:275a:b3f4:fae9%5]) with mapi id 15.20.8632.025; Mon, 14 Apr 2025
 12:40:11 +0000
From: "softworkz ." <softworkz-at-hotmail.com@ffmpeg.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Thread-Topic: [FFmpeg-devel] AVDictionary vs. AVSet (AVDictionary2
 approximation)
Thread-Index: AQHbrTEaXvjKypbCNkqW6ojU4mBbWbOjF48g
Date: Mon, 14 Apr 2025 12:40:11 +0000
Message-ID: <BN0P223MB0358D7E3367462AA4EF9B744BAB32@BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM>
References: <20250414113328.GM4991@pb2>
In-Reply-To: <20250414113328.GM4991@pb2>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BN0P223MB0358:EE_|DS4PPFAD6013C26:EE_
x-ms-office365-filtering-correlation-id: d238706b-9924-4caf-f5c2-08dd7b517f11
x-microsoft-antispam: BCL:0;
 ARA:14566002|7092599003|8060799006|19110799003|15080799006|461199028|8062599003|440099028|3412199025|102099032|12091999003;
x-microsoft-antispam-message-info: =?us-ascii?Q?9LMlmawGtOIyvrWc6RJ6/Qd1R+0wIsX6luFdNY2RLlff9x0Rve1kxCySa1CR?=
 =?us-ascii?Q?+n6fEgLfZkn55b/wqgyc1HSTNfMqKREjoSLfCHbQ3cxsumVErfoqOqJ7dKnX?=
 =?us-ascii?Q?DtyjJCaS3KDLQZHF9l4RcLAtMzuc8xQuuiHAklGVb0qw7JwK4IZ/aWkNxd2+?=
 =?us-ascii?Q?m/OeUNC6EXGBQDaTjHr3IqaTCrBbb6mOvoHjiAktOyyx9WL+l29ycVgRoLe5?=
 =?us-ascii?Q?G4tKOueXxGLPxADbHLDImF6TRh5KLntVDHRwp4GLlPWRLt3XN1XqUBQsS9Do?=
 =?us-ascii?Q?0j3ab8pv+Rp4g49PjXaJihkWouVR6J1cdCfz8UVfdKDOf9Nar4u9Q4QWO4m8?=
 =?us-ascii?Q?dtrVy/obL++yua3qvi6PbsALUSyx9u+9XX6l9jeiieB87qMSy9hTwU0j29/n?=
 =?us-ascii?Q?PzvBIfLy7GqU3qmILebA0j0r9NNeagQhEZ5UIc5nj7hmVCHY6SPm3fEtXRfw?=
 =?us-ascii?Q?EpQ1zKcNG/eNWH6NNCSgD+ROqX1nQ4FuIeIvNVH7qEl5pH+2P3uj9YsuwLuT?=
 =?us-ascii?Q?RvxT1EgWqpM6DTQvoj8TaIjI3PWbAABRgGpcrSpOJP7Ge0MKTNH9n9qZPvw3?=
 =?us-ascii?Q?3524pWrYGUphGX1Y0WX0EKh1pd53TjdJ680LtFtuhiYlmYQn7NMYNuJ+T/DS?=
 =?us-ascii?Q?RuOPz1CeOaGksq6Bc7ibNW7S+CWN6vAPTZr008y3+fI/MhFttTtwYyBj+lWE?=
 =?us-ascii?Q?6FgTnBIaccEY0w5ueR/1cJckeiXjZ2hBozbLrpLS98nMf7RxCxdK7YHqrXj2?=
 =?us-ascii?Q?e2+PBpAsc95zKFZpDosjdUCNK8bh2uHXmPe/x/zB5RVNgWj1f/fy5tgm/WzM?=
 =?us-ascii?Q?xDb0sR20A+3qbH/TDDWxIW+RkAqiQt6zbRry/e9SBTFygIxYCDzJrBLEG83z?=
 =?us-ascii?Q?zB92LK8H16gi1/5CtvuN7dlTjJJOZ+Cq5M37nCbEaX9+xUuMy/kitc3stnUy?=
 =?us-ascii?Q?Ar4X2Y4oDYKTEFhQ9rGtBMEWCHABCf1lkj8GvUZQt9u5pG4kVn9FCBg22o2t?=
 =?us-ascii?Q?D1+s83kOzkwkkehIYrZB1E/Epl1Nw4oZ+5yU0H+CZBbZLoINjlzmOl/FaKqf?=
 =?us-ascii?Q?D6PNGGgbbhM7BOHOVDIqinBEZfZcbHMX2G+UzxcIISnWOMC2RmLNASjP5lTM?=
 =?us-ascii?Q?57yn1LIN7KcnlQraz0nmUUXxPSfXTZAgTg=3D=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?kmTsNy9PZ/XXUF9hM9LT28AaGyuD8PoYHNIfYx2QfAP8nRV9/8r9RZ0Vckt4?=
 =?us-ascii?Q?Mjyor3BtgdkOsMDRXOZFz9LadGlaMEtdbRSvzmbJnV+9+TsA8KapMobM8nwo?=
 =?us-ascii?Q?sZpSEbOS41P2qeoAslL8ioftLI8PINQY9KXIE6EhrO4Xvxfp903jPEssisvZ?=
 =?us-ascii?Q?rc1jroGVZuvoFE+FCzhTcxkzvhS1VacF6Kkd6EUPribVQE6vArBKHMGXv1oe?=
 =?us-ascii?Q?oLPLf8NgilZ2zPlEwg70CGYr+WD5kkH4PoutawMlOa0EjHn419seanWb3iz7?=
 =?us-ascii?Q?MYc2Vk+zl76E6WY5Llu45hxzmtG1DfogAnp2e86Dfp+kQVHPqm/mjqkEi8I/?=
 =?us-ascii?Q?1cjMJOahajmzUW4oJim8uX+FVvPilZmyH8kOXQGvEZ2YtVvrpPqPMsztQ+0Q?=
 =?us-ascii?Q?Hj4CU5lrk8nrvUQHjNTX7lrU65+da4Bj6mHNw8rcu5u6tKp/HVM2nxQ/wcj5?=
 =?us-ascii?Q?BFAKbOvzI9paHKJlMC2sC05xVX2AF+RE9ReW8DoHxHY9yCkn596w2RrMJbJp?=
 =?us-ascii?Q?LxeneDKMZrdlW9q71FBuRPV39GpARvGwkIwGRwijAxBrssN/yEG9hxHZLkm8?=
 =?us-ascii?Q?nxnGHEWYveOgfdcJvBJPdtmFyg7O/1F3MSmL/DDfy2TQUnY0704tTBX/Qqh+?=
 =?us-ascii?Q?vSKuJutH21KgGfu/YXknfg+d34DIyeIJE8QS0hTnxRkR+aKIZO4eYcHWWrtK?=
 =?us-ascii?Q?Y91jnM0JZuczVkIj41vZ3+CG9+eK7HlV6N5k5QvBgNl5PhyZXJuYzRzUhR0P?=
 =?us-ascii?Q?QTaTG1uzA0GWTZ0dkd7Yy1O0/9hWdJ/2x5sGVQcaLowO7cdAn3FsMhakgMoo?=
 =?us-ascii?Q?WLrKHxHL862GmzZos2fmzSAwAgfiPvblmPFWGrwV13GAjGyZsIhppa9MWGRg?=
 =?us-ascii?Q?iPlzdDyH2jrn5vb4F5LWXLqxkghAz9MVMJpMKbT5aGHtx5RwPPLC1fuG1CG4?=
 =?us-ascii?Q?r52mx6SRjJcyWpGGKON013fVrV/unEthj+GPwI4MZllaxiY08l3zOmRjyt0r?=
 =?us-ascii?Q?axgrbkdgjwyrmJxkulf+vsJU/RtmFiOE9YSPhg61mg1nCFDPLVSGjycjv9O3?=
 =?us-ascii?Q?HpSAapLSp7Czcu38iU5RjA4epOfGnD3eeI++ZpGEBdFCBA/xHc0iHGSzlW50?=
 =?us-ascii?Q?nuburQwCnTSYCw2n4vENmT4R+ZALS97BfjfLqJxOWm/VssG+AfyptC3WY7Xz?=
 =?us-ascii?Q?Yw8GrewQSXvOUq6puPXe9tOSElARkDgRgFi4jwQ5k8hfsVe/HItm2zCXlQI?=
 =?us-ascii?Q?=3D?=
MIME-Version: 1.0
X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-1ff67.templateTenant
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: d238706b-9924-4caf-f5c2-08dd7b517f11
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2025 12:40:11.0300 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPFAD6013C26
Subject: Re: [FFmpeg-devel] AVDictionary vs. AVSet (AVDictionary2
 approximation)
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/BN0P223MB0358D7E3367462AA4EF9B744BAB32@BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>



> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> Michael Niedermayer
> Sent: Montag, 14. April 2025 13:33
> To: FFmpeg development discussions and patches <ffmpeg-
> devel@ffmpeg.org>
> Subject: [FFmpeg-devel] AVDictionary vs. AVSet (AVDictionary2
> approximation)
> 
> Hi
> 
> I just posted a AVSet implementation i wrote in the last 2 days (yes
> thats
> why i did dissapear for the last 2 days)
> 
> My plan was to use that AVSet as basis for AVDictionary2 in case
> benchmarks indicate that its worth it, so is it ?
> 
> with 3 entries (100000 runs)
> AVDictionary    0.040sec
> AVSet           0.027sec
> 
> with 5 entries (100000 runs)
> AVDictionary    0.065sec
> AVSet           0.042sec
> 
> with 10 entries (100000 runs)
> AVDictionary    0.193sec
> AVSet           0.087sec
> 
> with 100 entries (100000 runs)
> AVDictionary    8.7  sec
> AVSet           1.4  sec
> 
> with 1000 entries (1000 runs)
> AVDictionary    8.0   sec
> AVSet           0.240 sec
> 
> with 10000 entries (10 runs)
> AVDictionary    7.2   sec
> AVSet           0.042 sec
> 
> 
> I was a bit surprised for the 3 and 5 entry case, maybe my benchmark
> is buggy or
> AVSet is, but then AVDictionary is pretty bad with memory allocations
> 
> AVDictionary needs to strdup every key and value, needs to allocate
> the AVDictionary itself and reallocs the entry array each time
> thats 10 memory allocation related calls for adding 3 entries
> 
> while AVSet allocates the AVSet and then uses av_fast_realloc() for
> the array
> and theres nothing else, the key/value goes in that array too
> 
> 
> bechmark code used is below:
> 
> 
> #if 0
>     for (int runs = 0; runs < 100000; runs++) {
>         AVSet *set = av_set_new(strcmp, NULL, NULL);
>         for(int pass = 0; pass < 2; pass++) {
>             unsigned r = 5;
>             for(int i=0; i<100; i++) {
>                 r = r*123 + 7;
>                 char str[2*7] = "TESTXXTESTXX";
>                 str[4] = r;
>                 str[5] = r>>8;
>                 if(pass == 0) {
>                     av_set_add(set, str, 2*7, 0);
>                 } else {
>                     av_set_get(set, NULL, str, NULL);
>                 }
>             }
>         }
>         av_set_free(&set);
>     }
> #else
>     for (int runs = 0; runs < 100000; runs++) {
>         AVDictionary *dict = NULL;
>         for(int pass = 0; pass < 2; pass++) {
>             unsigned r = 5;
>             for(int i=0; i<100; i++) {
>                 r = r*123 + 7;
>                 char str[7] = "TEST";
>                 str[4] = r;
>                 str[5] = r>>8;
>                 if(pass == 0) {
>                     av_dict_set(&dict, str, str, 0);
>                 } else {
>                     av_dict_get(dict, str, NULL, 0);
>                 }
>             }
>         }
>         av_dict_free(&dict);
>     }
> #endif
> 
> 
> --

Hi Michael,


what's not quite realistic is that all keys are starting with the same 4 characters. This affects the lookups of course - and probably (maybe) not equally for both sides.

Doesn't the code create duplicate keys (at least when it gets > 65536 it will for sure) ?

So, I think, the keys should be completely random (all chars).

I would also check whether the lookups are successful (just to be sure).


Best,
sw


_______________________________________________
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".