diff --git a/Support/NewBenchmark/TouchJSONBenchmark.m b/Support/NewBenchmark/TouchJSONBenchmark.m index 2cd0fbe..fe069cb 100644 --- a/Support/NewBenchmark/TouchJSONBenchmark.m +++ b/Support/NewBenchmark/TouchJSONBenchmark.m @@ -8,39 +8,44 @@ #import -#import "CJSONDataSerializer.h" +#import "CJSONSerializer.h" #import "CJSONDeserializer.h" int main (int argc, const char * argv[]) -{ -NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + { + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; -NSDictionary *theDictionary = [NSDictionary dictionaryWithObjectsAndKeys: - @"Hello", @"World", - NULL]; - -CJSONDataSerializer *theSerializer = [CJSONDataSerializer serializer]; -CJSONDeserializer *theDeserializer = [CJSONDeserializer deserializer]; + NSDictionary *theDictionary = [NSDictionary dictionaryWithObjectsAndKeys: + @"Hello", @"World", + [NSNumber numberWithInt:42], @"Number", + [NSNull null], @"Null", + [NSNumber numberWithBool:YES], @"YES", + [NSNumber numberWithBool:NO], @"NO", + NULL]; + + CJSONSerializer *theSerializer = [CJSONSerializer serializer]; + CJSONDeserializer *theDeserializer = [CJSONDeserializer deserializer]; -NSData *theData = [theSerializer serializeObject:theDictionary error:NULL]; + NSData *theData = [theSerializer serializeObject:theDictionary error:NULL]; + NSLog(@"%@", [[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding] autorelease]); -CFAbsoluteTime theStart = CFAbsoluteTimeGetCurrent(); -for (int N = 0; N != 2000000; ++N) - { -//// [theDeserizl serializeObject:theDictionary error:NULL]; - NSAutoreleasePool *thePool = [[NSAutoreleasePool alloc] init]; - [theDeserializer deserialize:theData error:NULL]; - [thePool release]; - } + CFAbsoluteTime theStart = CFAbsoluteTimeGetCurrent(); + for (int N = 0; N != 400000; ++N) + { + //// [theDeserizl serializeObject:theDictionary error:NULL]; + NSAutoreleasePool *thePool = [[NSAutoreleasePool alloc] init]; + [theDeserializer deserialize:theData error:NULL]; + [thePool release]; + } -CFAbsoluteTime theEnd = CFAbsoluteTimeGetCurrent(); + CFAbsoluteTime theEnd = CFAbsoluteTimeGetCurrent(); -NSLog(@"%g", theEnd - theStart); + NSLog(@"%g", theEnd - theStart); -[pool drain]; -return 0; -} + [pool drain]; + return 0; + } diff --git a/Support/NewBenchmark/TouchJSONBenchmark.xcodeproj/project.pbxproj b/Support/NewBenchmark/TouchJSONBenchmark.xcodeproj/project.pbxproj index 71c6a27..a61a028 100644 --- a/Support/NewBenchmark/TouchJSONBenchmark.xcodeproj/project.pbxproj +++ b/Support/NewBenchmark/TouchJSONBenchmark.xcodeproj/project.pbxproj @@ -7,14 +7,16 @@ objects = { /* Begin PBXBuildFile section */ - 4569D4291268250F00AEC287 /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 4569D4111268250F00AEC287 /* CDataScanner.m */; }; - 4569D42B1268250F00AEC287 /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4569D4171268250F00AEC287 /* CDataScanner_Extensions.m */; }; - 4569D42C1268250F00AEC287 /* NSCharacterSet_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4569D4191268250F00AEC287 /* NSCharacterSet_Extensions.m */; }; - 4569D42D1268250F00AEC287 /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4569D41B1268250F00AEC287 /* NSDictionary_JSONExtensions.m */; }; - 4569D42E1268250F00AEC287 /* NSScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4569D41D1268250F00AEC287 /* NSScanner_Extensions.m */; }; - 4569D4301268250F00AEC287 /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4569D4221268250F00AEC287 /* CJSONDeserializer.m */; }; - 4569D4311268250F00AEC287 /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 4569D4241268250F00AEC287 /* CJSONScanner.m */; }; - 4569D4321268250F00AEC287 /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4569D4261268250F00AEC287 /* CJSONSerializer.m */; }; + 459A1F5B13DB5296004E9CFE /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F4413DB5296004E9CFE /* CDataScanner.m */; }; + 459A1F5C13DB5296004E9CFE /* CFilteringJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F4713DB5296004E9CFE /* CFilteringJSONSerializer.m */; }; + 459A1F5D13DB5296004E9CFE /* CJSONDeserializer_BlocksExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F4913DB5296004E9CFE /* CJSONDeserializer_BlocksExtensions.m */; }; + 459A1F5E13DB5296004E9CFE /* CJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F4B13DB5296004E9CFE /* CJSONSerialization.m */; }; + 459A1F5F13DB5296004E9CFE /* CJSONSerializedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F4D13DB5296004E9CFE /* CJSONSerializedData.m */; }; + 459A1F6013DB5296004E9CFE /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F5013DB5296004E9CFE /* CDataScanner_Extensions.m */; }; + 459A1F6113DB5296004E9CFE /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F5213DB5296004E9CFE /* NSDictionary_JSONExtensions.m */; }; + 459A1F6213DB5296004E9CFE /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F5513DB5296004E9CFE /* CJSONDeserializer.m */; }; + 459A1F6313DB5296004E9CFE /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F5713DB5296004E9CFE /* CJSONScanner.m */; }; + 459A1F6413DB5296004E9CFE /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 459A1F5913DB5296004E9CFE /* CJSONSerializer.m */; }; 8DD76F9A0486AA7600D96B5E /* TouchJSONBenchmark.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* TouchJSONBenchmark.m */; settings = {ATTRIBUTES = (); }; }; 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; /* End PBXBuildFile section */ @@ -35,22 +37,27 @@ 08FB7796FE84155DC02AAC07 /* TouchJSONBenchmark.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TouchJSONBenchmark.m; sourceTree = ""; }; 08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32A70AAB03705E1F00C91783 /* TouchJSONBenchmark_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchJSONBenchmark_Prefix.pch; sourceTree = ""; }; - 4569D4101268250F00AEC287 /* CDataScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner.h; sourceTree = ""; }; - 4569D4111268250F00AEC287 /* CDataScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner.m; sourceTree = ""; }; - 4569D4161268250F00AEC287 /* CDataScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner_Extensions.h; sourceTree = ""; }; - 4569D4171268250F00AEC287 /* CDataScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner_Extensions.m; sourceTree = ""; }; - 4569D4181268250F00AEC287 /* NSCharacterSet_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSCharacterSet_Extensions.h; sourceTree = ""; }; - 4569D4191268250F00AEC287 /* NSCharacterSet_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSCharacterSet_Extensions.m; sourceTree = ""; }; - 4569D41A1268250F00AEC287 /* NSDictionary_JSONExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDictionary_JSONExtensions.h; sourceTree = ""; }; - 4569D41B1268250F00AEC287 /* NSDictionary_JSONExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDictionary_JSONExtensions.m; sourceTree = ""; }; - 4569D41C1268250F00AEC287 /* NSScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSScanner_Extensions.h; sourceTree = ""; }; - 4569D41D1268250F00AEC287 /* NSScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSScanner_Extensions.m; sourceTree = ""; }; - 4569D4211268250F00AEC287 /* CJSONDeserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDeserializer.h; sourceTree = ""; }; - 4569D4221268250F00AEC287 /* CJSONDeserializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDeserializer.m; sourceTree = ""; }; - 4569D4231268250F00AEC287 /* CJSONScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONScanner.h; sourceTree = ""; }; - 4569D4241268250F00AEC287 /* CJSONScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONScanner.m; sourceTree = ""; }; - 4569D4251268250F00AEC287 /* CJSONSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONSerializer.h; sourceTree = ""; }; - 4569D4261268250F00AEC287 /* CJSONSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONSerializer.m; sourceTree = ""; }; + 459A1F4313DB5296004E9CFE /* CDataScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner.h; sourceTree = ""; }; + 459A1F4413DB5296004E9CFE /* CDataScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner.m; sourceTree = ""; }; + 459A1F4613DB5296004E9CFE /* CFilteringJSONSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFilteringJSONSerializer.h; sourceTree = ""; }; + 459A1F4713DB5296004E9CFE /* CFilteringJSONSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CFilteringJSONSerializer.m; sourceTree = ""; }; + 459A1F4813DB5296004E9CFE /* CJSONDeserializer_BlocksExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDeserializer_BlocksExtensions.h; sourceTree = ""; }; + 459A1F4913DB5296004E9CFE /* CJSONDeserializer_BlocksExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDeserializer_BlocksExtensions.m; sourceTree = ""; }; + 459A1F4A13DB5296004E9CFE /* CJSONSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONSerialization.h; sourceTree = ""; }; + 459A1F4B13DB5296004E9CFE /* CJSONSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONSerialization.m; sourceTree = ""; }; + 459A1F4C13DB5296004E9CFE /* CJSONSerializedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONSerializedData.h; sourceTree = ""; }; + 459A1F4D13DB5296004E9CFE /* CJSONSerializedData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONSerializedData.m; sourceTree = ""; }; + 459A1F4F13DB5296004E9CFE /* CDataScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner_Extensions.h; sourceTree = ""; }; + 459A1F5013DB5296004E9CFE /* CDataScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner_Extensions.m; sourceTree = ""; }; + 459A1F5113DB5296004E9CFE /* NSDictionary_JSONExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDictionary_JSONExtensions.h; sourceTree = ""; }; + 459A1F5213DB5296004E9CFE /* NSDictionary_JSONExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDictionary_JSONExtensions.m; sourceTree = ""; }; + 459A1F5413DB5296004E9CFE /* CJSONDeserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDeserializer.h; sourceTree = ""; }; + 459A1F5513DB5296004E9CFE /* CJSONDeserializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDeserializer.m; sourceTree = ""; }; + 459A1F5613DB5296004E9CFE /* CJSONScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONScanner.h; sourceTree = ""; }; + 459A1F5713DB5296004E9CFE /* CJSONScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONScanner.m; sourceTree = ""; }; + 459A1F5813DB5296004E9CFE /* CJSONSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONSerializer.h; sourceTree = ""; }; + 459A1F5913DB5296004E9CFE /* CJSONSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONSerializer.m; sourceTree = ""; }; + 459A1F5A13DB5296004E9CFE /* JSONRepresentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSONRepresentation.h; sourceTree = ""; }; 8DD76FA10486AA7600D96B5E /* TouchJSONBenchmark */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TouchJSONBenchmark; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -70,8 +77,8 @@ isa = PBXGroup; children = ( 08FB7795FE84155DC02AAC07 /* Source */, - 4569D40F1268250F00AEC287 /* Source */, 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */, + 459A1F4213DB5296004E9CFE /* Source */, 1AB674ADFE9D54B511CA2CBB /* Products */, ); name = TouchJSONBenchmark; @@ -102,42 +109,55 @@ name = Products; sourceTree = ""; }; - 4569D40F1268250F00AEC287 /* Source */ = { + 459A1F4213DB5296004E9CFE /* Source */ = { isa = PBXGroup; children = ( - 4569D4101268250F00AEC287 /* CDataScanner.h */, - 4569D4111268250F00AEC287 /* CDataScanner.m */, - 4569D4151268250F00AEC287 /* Extensions */, - 4569D41E1268250F00AEC287 /* JSON */, + 459A1F4313DB5296004E9CFE /* CDataScanner.h */, + 459A1F4413DB5296004E9CFE /* CDataScanner.m */, + 459A1F4513DB5296004E9CFE /* Experimental */, + 459A1F4E13DB5296004E9CFE /* Extensions */, + 459A1F5313DB5296004E9CFE /* JSON */, ); name = Source; path = ../../Source; - sourceTree = SOURCE_ROOT; + sourceTree = ""; + }; + 459A1F4513DB5296004E9CFE /* Experimental */ = { + isa = PBXGroup; + children = ( + 459A1F4613DB5296004E9CFE /* CFilteringJSONSerializer.h */, + 459A1F4713DB5296004E9CFE /* CFilteringJSONSerializer.m */, + 459A1F4813DB5296004E9CFE /* CJSONDeserializer_BlocksExtensions.h */, + 459A1F4913DB5296004E9CFE /* CJSONDeserializer_BlocksExtensions.m */, + 459A1F4A13DB5296004E9CFE /* CJSONSerialization.h */, + 459A1F4B13DB5296004E9CFE /* CJSONSerialization.m */, + 459A1F4C13DB5296004E9CFE /* CJSONSerializedData.h */, + 459A1F4D13DB5296004E9CFE /* CJSONSerializedData.m */, + ); + path = Experimental; + sourceTree = ""; }; - 4569D4151268250F00AEC287 /* Extensions */ = { + 459A1F4E13DB5296004E9CFE /* Extensions */ = { isa = PBXGroup; children = ( - 4569D4161268250F00AEC287 /* CDataScanner_Extensions.h */, - 4569D4171268250F00AEC287 /* CDataScanner_Extensions.m */, - 4569D4181268250F00AEC287 /* NSCharacterSet_Extensions.h */, - 4569D4191268250F00AEC287 /* NSCharacterSet_Extensions.m */, - 4569D41A1268250F00AEC287 /* NSDictionary_JSONExtensions.h */, - 4569D41B1268250F00AEC287 /* NSDictionary_JSONExtensions.m */, - 4569D41C1268250F00AEC287 /* NSScanner_Extensions.h */, - 4569D41D1268250F00AEC287 /* NSScanner_Extensions.m */, + 459A1F4F13DB5296004E9CFE /* CDataScanner_Extensions.h */, + 459A1F5013DB5296004E9CFE /* CDataScanner_Extensions.m */, + 459A1F5113DB5296004E9CFE /* NSDictionary_JSONExtensions.h */, + 459A1F5213DB5296004E9CFE /* NSDictionary_JSONExtensions.m */, ); path = Extensions; sourceTree = ""; }; - 4569D41E1268250F00AEC287 /* JSON */ = { + 459A1F5313DB5296004E9CFE /* JSON */ = { isa = PBXGroup; children = ( - 4569D4211268250F00AEC287 /* CJSONDeserializer.h */, - 4569D4221268250F00AEC287 /* CJSONDeserializer.m */, - 4569D4231268250F00AEC287 /* CJSONScanner.h */, - 4569D4241268250F00AEC287 /* CJSONScanner.m */, - 4569D4251268250F00AEC287 /* CJSONSerializer.h */, - 4569D4261268250F00AEC287 /* CJSONSerializer.m */, + 459A1F5413DB5296004E9CFE /* CJSONDeserializer.h */, + 459A1F5513DB5296004E9CFE /* CJSONDeserializer.m */, + 459A1F5613DB5296004E9CFE /* CJSONScanner.h */, + 459A1F5713DB5296004E9CFE /* CJSONScanner.m */, + 459A1F5813DB5296004E9CFE /* CJSONSerializer.h */, + 459A1F5913DB5296004E9CFE /* CJSONSerializer.m */, + 459A1F5A13DB5296004E9CFE /* JSONRepresentation.h */, ); path = JSON; sourceTree = ""; @@ -193,14 +213,16 @@ buildActionMask = 2147483647; files = ( 8DD76F9A0486AA7600D96B5E /* TouchJSONBenchmark.m in Sources */, - 4569D4291268250F00AEC287 /* CDataScanner.m in Sources */, - 4569D42B1268250F00AEC287 /* CDataScanner_Extensions.m in Sources */, - 4569D42C1268250F00AEC287 /* NSCharacterSet_Extensions.m in Sources */, - 4569D42D1268250F00AEC287 /* NSDictionary_JSONExtensions.m in Sources */, - 4569D42E1268250F00AEC287 /* NSScanner_Extensions.m in Sources */, - 4569D4301268250F00AEC287 /* CJSONDeserializer.m in Sources */, - 4569D4311268250F00AEC287 /* CJSONScanner.m in Sources */, - 4569D4321268250F00AEC287 /* CJSONSerializer.m in Sources */, + 459A1F5B13DB5296004E9CFE /* CDataScanner.m in Sources */, + 459A1F5C13DB5296004E9CFE /* CFilteringJSONSerializer.m in Sources */, + 459A1F5D13DB5296004E9CFE /* CJSONDeserializer_BlocksExtensions.m in Sources */, + 459A1F5E13DB5296004E9CFE /* CJSONSerialization.m in Sources */, + 459A1F5F13DB5296004E9CFE /* CJSONSerializedData.m in Sources */, + 459A1F6013DB5296004E9CFE /* CDataScanner_Extensions.m in Sources */, + 459A1F6113DB5296004E9CFE /* NSDictionary_JSONExtensions.m in Sources */, + 459A1F6213DB5296004E9CFE /* CJSONDeserializer.m in Sources */, + 459A1F6313DB5296004E9CFE /* CJSONScanner.m in Sources */, + 459A1F6413DB5296004E9CFE /* CJSONSerializer.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Support/NewBenchmark/TouchJSONBenchmark.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Support/NewBenchmark/TouchJSONBenchmark.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..e1a192b --- /dev/null +++ b/Support/NewBenchmark/TouchJSONBenchmark.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + +