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 E16914CE39
	for <ffmpegdev@gitmailbox.com>; Mon, 14 Apr 2025 13:02:14 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 70FCA687CAC;
	Mon, 14 Apr 2025 16:02:10 +0300 (EEST)
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12olkn2047.outbound.protection.outlook.com [40.92.22.47])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E8FC0687AA5
 for <ffmpeg-devel@ffmpeg.org>; Mon, 14 Apr 2025 16:02:03 +0300 (EEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=c1Xj8LJneeXCZvsPvoOZIfOpHJUOLAGd+rzrxU0p9CxOjbXDOlcbavKW51nqFTddKPrJUrTqRKhcKSCo9URTHpDCoiX+j1o8JMzXELrJ23TTkk5RRa0so1lSwEWUuj8umTSjZno3MJCP8fLld4Wx8NqnM3Q9iyK9Xy+U0A/woF6Kf7pQ/2K5XuaK0lDNqH9DHPS52DUkSpOks/wgWoKs4hJbND7ZtYDtJomEApZ4fIae/qokjnTlKBV+eCEo19SrE+1/8a0C78XPrZgMJ9LFWUhnbzeuyt9oo7wgBpE8yUrmPsVthdihZxoUSmxd7ULPn5JRaQD9uDOmPWMnXPPxag==
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=ARTu4lSH6h2vtXydiAWmEhjuziSs5xFn3K4tF5BhH30=;
 b=B12PoENoDIHYhftaL5B3k8uqDkptpzQ7fVH5UEUN4WGy1CaS/13XtTGJmzxGUfEr+3GTQS2oHda6gY/cYqqULEgWnZHGZtXBjqTg+xEU1pWU9AUoHWmT1Lkdu9YObZCO4ie33dNEBGVOdt3I8651aCFbADxxPJ3B61WScqDjLp7R2j87A3APb0big6foxEPQKVGqF0jqrGrz6Ch/Ip6HBSCs702KjFG7lXQonmDLna/t7SVG36pzf7OO2F6N/WPKyrjJTYSfRvkEzkWbn+f1UXK/4rAlSlYEZqS/h3exzneg66FDv4qYX/W4bNqDE7TN+0u6fCeKuqrKVlcukfFMTQ==
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=ARTu4lSH6h2vtXydiAWmEhjuziSs5xFn3K4tF5BhH30=;
 b=FKOJKnltDmYmQ6VZkKkIrtbictwu7kSm77LjrWKYoDJm+ke6NGeu3D1mt3qubyx7Y/FFeNyncgUXqSLMQCy9iP7dYOwlQJlklqRKxohuzfg6kso3RVHLNYEQZJAeC741wgpQV+0lJk9e8xbqRKRyWQ9FzDZLZ8kutfBSf2VLBuq81ldSbmAuZFslFr9/1Z10Clx2nKlKzKZt7MQHLG57WV/oXSrqMmayOg5zOIl3PEcYk2ofDalDTBnTKuEgRkvYwS/jkJM2Klm7FuHro9wfrwnMyD3PYymxRJsZXFMvTHcPQZ3qCUgNlwg0N/ahXj3tcPH6oAoe73dXrTICJdImNg==
Received: from BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM (2603:10b6:408:145::16)
 by DM8P223MB0061.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::7) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8632.34; Mon, 14 Apr 2025 13:02:00 +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
 13:02:00 +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: AQHbrTEaXvjKypbCNkqW6ojU4mBbWbOjF48ggAAIA+A=
Date: Mon, 14 Apr 2025 13:02:00 +0000
Message-ID: <BN0P223MB03581807CBC5FCBC171EC87CBAB32@BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM>
References: <20250414113328.GM4991@pb2>
 <BN0P223MB0358D7E3367462AA4EF9B744BAB32@BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM>
In-Reply-To: <BN0P223MB0358D7E3367462AA4EF9B744BAB32@BN0P223MB0358.NAMP223.PROD.OUTLOOK.COM>
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_|DM8P223MB0061:EE_
x-ms-office365-filtering-correlation-id: 07449bb5-7a90-4d07-0ede-08dd7b548b9e
x-microsoft-antispam: BCL:0;
 ARA:14566002|15080799006|8062599003|461199028|7092599003|19110799003|8060799006|3412199025|440099028|102099032|12091999003;
x-microsoft-antispam-message-info: =?us-ascii?Q?e9S5VrUgbqFvmONOPKwLldh6gJXpvW182JrFbNIqOcE1aC1lPbb60DE3doPl?=
 =?us-ascii?Q?Ir/YO7ZeJdjI8QzOTDmuRBXoB8qaityj8kbPw62bFq67tUzQYSv1e5lbissv?=
 =?us-ascii?Q?OEbTILxa22R7ZJMFHYbLjfnrgw72FWfbVrO77oBiJUAYgt9Vs/1+oY4qaOr2?=
 =?us-ascii?Q?000zP9q9rn2NtX+cgiyql3RXWGs7667VwRMr0mFhULDljko6Zxqbhd+kAm9H?=
 =?us-ascii?Q?1RL0GjyeU96OijlQLWN/ctOdLb6xw3iD9SD1jkrDTR7vPMUBnXmQhmTl2B+J?=
 =?us-ascii?Q?D4nUl71r2I9Wq3bsdFSC8obpjmyWgpPPUwg3ligKyPwHRGHt05dt/GtQPSGr?=
 =?us-ascii?Q?kHg0f/73ram3bvV9NYP1AwSGpq6mqMsLo5h9TxHAMvMc73Wu6616eSUI8ym1?=
 =?us-ascii?Q?BsnfS3b5J1At224vrP1vR2aMbCRJiP2tif6yXh5McjWV1I4tDRcUy1Xmw74I?=
 =?us-ascii?Q?gGN2y4QiqEOuvL5WnhCMYX9MWfEUoTENO5rjGIp5xaUoEQy4cWVTxOhs8LCM?=
 =?us-ascii?Q?7HIQCYKv4Pti9uP/pPxBzIiriW/T6MjcrtHzFSm4RZpgQtqNjR69DeNAjV9N?=
 =?us-ascii?Q?CE9mxqcAEu/EeEiGfqsnsMHsqwfdg/1ULUPduZfcrUOtGDdUqEmrsqpQh/2D?=
 =?us-ascii?Q?9BeAKg7vogHaBsYLSnqD8ox+fTC0DL+MwQO1Z8Vo30e3/Xtl4a5RuMYdFKYl?=
 =?us-ascii?Q?8VPGpem8O3mIIBPsl86czgKY2amUc2Ogv4YSFFUwF7/BiTe6fghA2tnOk4yB?=
 =?us-ascii?Q?i6szzizNdnwGCeP0hLvc3XkVV8EGYTaGAF1nTONTaGFJ5ieXgsAlJ2KJkep5?=
 =?us-ascii?Q?IovCcyp/Fgr2Fu3YRRVIc3CiPkszyrcE/A3vpmBHBBCBVe7Xc4RAjVL0KZuT?=
 =?us-ascii?Q?U8tM79Uo+XFUYVyHoEu7ZmY8aCxtO3stnF8QUBIRwxOfANbQmqDFqqeYLGJE?=
 =?us-ascii?Q?gmNG5BGzbKjdVdZjOrz9mpY01TofxnuM46Px1V7wwloO+n1kOA+E32YFrp7t?=
 =?us-ascii?Q?h8OpWuXQlhlCiIk1Bumfc7I3Uc/aZOaxkmhEQVpXLb3yW6V2ESwMSIHUlJo3?=
 =?us-ascii?Q?/dUzPhufT+ExTTMsqeI9jeEnPvugzUR2tO0ZQot7PMhmuo4wcJ6fOzJvbx5/?=
 =?us-ascii?Q?0ufTgPKL7by0uXBtbxLJUsNy/JodFhWhZg=3D=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?tiRFytHojsdLWJY7xBHQSAYR5jbC4ZP16AI9TdJpWhtCpYs5uTJ5KRmyz6MD?=
 =?us-ascii?Q?Ikv/HFaMsQsNf/zM//QrtVbUoAsETMHL6hB9sEMWqQQBzgZH0ONw5ssJdkk2?=
 =?us-ascii?Q?6AUpJgWLtE7CNwa1Tii/6t1tOQsvPeMSA0wkm7uiODJopM+TAMTEqL6e17t4?=
 =?us-ascii?Q?CU3K6thP0Gp5USS80bYZqVVi2WJXNZ4s2uobaWsPYsAmaB+5tl1EjQX7fwzM?=
 =?us-ascii?Q?LQpu/dQxo5zrpbfKJcFm4bNFl71AsVph6pLhzyUOj/R1FwNxA0IaPSgaVppW?=
 =?us-ascii?Q?38POutx7bjmRjwTVh8ZzkFPeLT1wF4WJrxQQbaNpyK1d7L4eyjI8kBqqw/nV?=
 =?us-ascii?Q?NSyL46d56+kOv6XONMD0RKSfBy0tv/PFPKaMx1a//pjWD2vHB3saXe3F7bZN?=
 =?us-ascii?Q?rMvqowj0V7r/VawMhxfPdqULWMFLZB9M2mz8IBVeqckufX2lFtQG9aJhQ661?=
 =?us-ascii?Q?5KzUlszsQhKc4fJUY20MNlM6/MBxtkamV2E7S9uQhD6Vg1A1/9pt5nS7eEKq?=
 =?us-ascii?Q?R59yf20IdBqKboHBZymD452SUHeuxhMHeKYXgAx0kQo6mcCQpjwydG4bXyPc?=
 =?us-ascii?Q?opjDmp9wShOhSyMzBCWyBPbRRezT8W7kTi/wBszJB+AwPvyJfLpkknmWuTiQ?=
 =?us-ascii?Q?RkU1nK0PiMOp7bzmyxszi7pViPEiJAWd01Vj64PCbWyWGPCctjKJ6y+GE79e?=
 =?us-ascii?Q?y3n3i8bRpJHsv5Eu1KawvlcEDkG8PG6KFomNlojO8OOHWcYoSrU+MQmMZ7pG?=
 =?us-ascii?Q?8fJUR2Khq9FqnstOYG2EsuUIJTQjY9dJ+iMdKCu+84Scm4ry8wz40kgd7nA9?=
 =?us-ascii?Q?XMWXKpENR+BpMZW6eX1/QhHZ+R5bfOYIcgFGp0L+rhrbU6hbQ8Sr0S+R/Bd/?=
 =?us-ascii?Q?Ir+NvTnhI+bsgC4oCk/bxdbLYssv40EDFKxGPZ7mhheThP4muRnk2alaLRRw?=
 =?us-ascii?Q?yV8Y31P+w1Hbe1xXXjFgBYfTAPUKkQDNciwQhqHiXCYl4xAfXNadLHDL6zUQ?=
 =?us-ascii?Q?UUIE/iO3m8sLr1LG2OoGWGTvcyXjfcruz+AH3P+RxEJ3gwX5TrqY/DsjNbfs?=
 =?us-ascii?Q?DR5BpvEVVxCVL0/WXKQZzjMH/4/ovGt7D5FWchezfHTbZ6ljKBLan7HnXpUl?=
 =?us-ascii?Q?rSvYQxiN7QbGIu1fVBWK4kI5UZ/rfGRp+8i6HXDMHQqoE4zFkzIlUXP1jfNS?=
 =?us-ascii?Q?bkj/9w6AVUYqWYPGkME29ftXHykdR8192LR1/CZ+2enqdcT0JLRdEUdp9H0?=
 =?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: 07449bb5-7a90-4d07-0ede-08dd7b548b9e
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2025 13:02:00.6161 (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: DM8P223MB0061
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/BN0P223MB03581807CBC5FCBC171EC87CBAB32@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
> softworkz .
> Sent: Montag, 14. April 2025 14:40
> To: FFmpeg development discussions and patches <ffmpeg-
> devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] AVDictionary vs. AVSet (AVDictionary2
> approximation)
> 
> 
> 
> > -----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).

Sorry, I forgot the most important one: 

Timing for population and lookup should be measured separately..

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