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