Jelajahi Sumber

Remove finalization calls in TJSONObject.Create(Elements), speedup~2.5%

Alligator-1 2 minggu lalu
induk
melakukan
43dc8c41fc
2 mengubah file dengan 8 tambahan dan 2 penghapusan
  1. 6 0
      packages/fcl-json/src/fpjson.pp
  2. 2 2
      packages/fcl-json/src/jsonparser.pp

+ 6 - 0
packages/fcl-json/src/fpjson.pp

@@ -822,6 +822,7 @@ Function CreateJSON(const Data : TJSONStringType) : TJSONString;
 Function CreateJSON(const Data : TJSONUnicodeStringType) : TJSONString;
 {$ENDIF}
 Function CreateJSONArray(const Data : Array of {$IFDEF PAS2JS}jsvalue{$else}Const{$ENDIF}) : TJSONArray;
+Function CreateJSONObject : TJSONObject;
 Function CreateJSONObject(const Data : Array of {$IFDEF PAS2JS}jsvalue{$else}Const{$ENDIF}) : TJSONObject;
 
 // These functions rely on a callback. If the callback is not set, they will raise an error.
@@ -1238,6 +1239,11 @@ begin
   Result:=TJSONArrayCLass(DefaultJSONInstanceTypes[jitArray]).Create(Data);
 end;
 
+function CreateJSONObject: TJSONObject;
+begin
+  Result:=TJSONObjectClass(DefaultJSONInstanceTypes[jitObject]).Create;
+end;
+
 function CreateJSONObject(const Data: array of {$IFDEF PAS2JS}jsvalue{$else}Const{$ENDIF}): TJSONObject;
 begin
   Result:=TJSONObjectClass(DefaultJSONInstanceTypes[jitObject]).Create(Data);

+ 2 - 2
packages/fcl-json/src/jsonparser.pp

@@ -210,13 +210,13 @@ end;
 
 procedure TJSONParser.StartArray;
 begin
-  Push(NewValue(CreateJSONArray([])))
+  Push(NewValue(CreateJSONArray([])));
 end;
 
 
 procedure TJSONParser.StartObject;
 begin
-  Push(NewValue(CreateJSONObject([])));
+  Push(NewValue(CreateJSONObject));
 end;
 
 procedure TJSONParser.EndArray;