From eb33a3ab12dbceedcf39f038242a56be23a9a175 Mon Sep 17 00:00:00 2001 From: Chris Williams Date: Thu, 9 Jul 2026 21:47:49 -0400 Subject: [PATCH 1/2] Pre-size dictionaries when converting valdi Values to NSDictionary --- .../ios/valdi_core/SCValdiObjCConversionUtils.mm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/valdi_core/src/valdi_core/ios/valdi_core/SCValdiObjCConversionUtils.mm b/valdi_core/src/valdi_core/ios/valdi_core/SCValdiObjCConversionUtils.mm index c73157bf..5a6ba4f9 100644 --- a/valdi_core/src/valdi_core/ios/valdi_core/SCValdiObjCConversionUtils.mm +++ b/valdi_core/src/valdi_core/ios/valdi_core/SCValdiObjCConversionUtils.mm @@ -219,8 +219,9 @@ id NSObjectFromValue(const Valdi::Value &value) { return @(value.toBool()); case Valdi::ValueType::Map: { - NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; - for (const auto &it : *value.getMap()) { + const auto &valueMap = *value.getMap(); + NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:valueMap.size()]; + for (const auto &it : valueMap) { dictionary[NSStringFromString(it.first)] = NSObjectFromValue(it.second); } @@ -244,7 +245,7 @@ id NSObjectFromValue(const Valdi::Value &value) { case Valdi::ValueType::TypedObject: { const auto &typedObject = *value.getTypedObject(); - NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:typedObject.getPropertiesSize()]; for (const auto &property: typedObject) { dictionary[NSStringFromString(property.name)] = NSObjectFromValue(property.value); } From 2381bb1bf5d48c4f801a63baca38bbd92d509602 Mon Sep 17 00:00:00 2001 From: Chris Williams Date: Thu, 9 Jul 2026 21:48:10 -0400 Subject: [PATCH 2/2] Reserve ValueMap capacity when converting NSDictionary to valdi Value --- .../src/valdi_core/ios/valdi_core/SCValdiObjCConversionUtils.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/valdi_core/src/valdi_core/ios/valdi_core/SCValdiObjCConversionUtils.mm b/valdi_core/src/valdi_core/ios/valdi_core/SCValdiObjCConversionUtils.mm index 5a6ba4f9..d0660d5f 100644 --- a/valdi_core/src/valdi_core/ios/valdi_core/SCValdiObjCConversionUtils.mm +++ b/valdi_core/src/valdi_core/ios/valdi_core/SCValdiObjCConversionUtils.mm @@ -349,6 +349,7 @@ id NSObjectFromValue(const Valdi::Value &value) { Valdi::Value ValueFromNSDictionary(NSDictionary *dict) { auto map = Valdi::makeShared(); + map->reserve(dict.count); for (NSString *key in dict) { id value = [dict objectForKey:key]; auto weakValue = ValueFromNSObject(value);