![]() |
REST.Json extrem langsam?
Hi,
deserialisiere ein Objekt mit einer Liste mit 500 Objekten, dies dauert 5-7 Sekunden, ist das normal? Gibt es schnellere JSON Serialisierer? |
AW: REST.Json extrem langsam?
|
AW: REST.Json extrem langsam?
|
AW: REST.Json extrem langsam?
|
AW: REST.Json extrem langsam?
Dann solltest du mal etwas Code zeigen - idealerweise ein kleines Programm, mit dem man es reproduzieren kann.
|
AW: REST.Json extrem langsam?
Programm ist schwierig und JSON auch, da ich das nicht öffentlich machen kann.
Das Objekt.
Code:
Und das deserialisieren
type
TecRmiData = class private FTypeId: string; FTcdTypeId: string; FHerstSchluessel: string; FTypSchluessel: string; FVvs_Schluessel: string; FTypVvsPruefziffer: string; FFahrzeugklasse: string; FCodeAufbau: string; FFabrikMarke: string; FAmtlKlartextTyp: string; FVariante: string; FVersion: string; FHandelsName: string; FHerstText: string; FAmtlKlartextaufbau: string; FTxtKraftstoffKurz: string; FCodeKraftstoff: string; FHubraum: string; FAnzAchsen: string; FAbgasrichtlTg: string; FNationaleEmiklasse: string; FAntriebsachs: string; FNennleistungKw4: string; FNennleistungElektro30Min: string; FHoechstgeschwindigkeit: string; FAnzahlSitze: string; FMasseFahrbereitMin: string; FMasseFahrbereitMax: string; FTechZulGesamtMasse: string; FZulMaxAchsLast1: string; FZulMaxAchsLast2: string; FCo2Kombi: string; FStandgeraeusch3: string; FDrehStandgeraeusch: string; FFahrgeraeusch3: string; FTechnZulAnhaengerLastGebrem: string; FTechnZulAnhaengerLastUngebrem: string; FLeistungsGew: string; FLaengeMin: string; FLaengeMax: string; FBreiteMin: string; FBreiteMax: string; FHoeheMin: string; FHoeheMax: string; FStuetzLast: string; FBereifAchse1: string; FBereifAchse2: string; FGenehmigungsNr01: string; FGenehmigungsDat01: string; FBemerkungenAusnahmen: string; FAnmerkungen: string; FTxAnbringFzidnr: string; FBaumuster: string; FTxGetrTyp: string; FFelgeAchse1: string; FFelgeAchse2: string; published property TypeId: string read FTypeId write FTypeId; property TcdTypeId: string read FTcdTypeId write FTcdTypeId; property HerstSchluessel: string read FHerstSchluessel write FHerstSchluessel; property TypSchluessel: string read FTypSchluessel write FTypSchluessel; property Vvs_Schluessel: string read FVvs_Schluessel write FVvs_Schluessel; property TypVvsPruefziffer: string read FTypVvsPruefziffer write FTypVvsPruefziffer; property Fahrzeugklasse: string read FFahrzeugklasse write FFahrzeugklasse; property CodeAufbau: string read FCodeAufbau write FCodeAufbau; property FabrikMarke: string read FFabrikMarke write FFabrikMarke; property AmtlKlartextTyp: string read FAmtlKlartextTyp write FAmtlKlartextTyp; property Variante: string read FVariante write FVariante; property Version: string read FVersion write FVersion; property HandelsName: string read FHandelsName write FHandelsName; property HerstText: string read FHerstText write FHerstText; property AmtlKlartextaufbau: string read FAmtlKlartextaufbau write FAmtlKlartextaufbau; property TxtKraftstoffKurz: string read FTxtKraftstoffKurz write FTxtKraftstoffKurz; property CodeKraftstoff: string read FCodeKraftstoff write FCodeKraftstoff; property Hubraum: string read FHubraum write FHubraum; property AnzAchsen: string read FAnzAchsen write FAnzAchsen; property AbgasrichtlTg: string read FAbgasrichtlTg write FAbgasrichtlTg; property NationaleEmiklasse: string read FNationaleEmiklasse write FNationaleEmiklasse; property Antriebsachs: string read FAntriebsachs write FAntriebsachs; property NennleistungKw4: string read FNennleistungKw4 write FNennleistungKw4; property NennleistungElektro30Min: string read FNennleistungElektro30Min write FNennleistungElektro30Min; property Hoechstgeschwindigkeit: string read FHoechstgeschwindigkeit write FHoechstgeschwindigkeit; property AnzahlSitze: string read FAnzahlSitze write FAnzahlSitze; property MasseFahrbereitMin: string read FMasseFahrbereitMin write FMasseFahrbereitMin; property MasseFahrbereitMax: string read FMasseFahrbereitMax write FMasseFahrbereitMax; property TechZulGesamtMasse: string read FTechZulGesamtMasse write FTechZulGesamtMasse; property ZulMaxAchsLast1: string read FZulMaxAchsLast1 write FZulMaxAchsLast1; property ZulMaxAchsLast2: string read FZulMaxAchsLast2 write FZulMaxAchsLast2; property Co2Kombi: string read FCo2Kombi write FCo2Kombi; property Standgeraeusch3: string read FStandgeraeusch3 write FStandgeraeusch3; property DrehStandgeraeusch: string read FDrehStandgeraeusch write FDrehStandgeraeusch; property Fahrgeraeusch3: string read FFahrgeraeusch3 write FFahrgeraeusch3; property TechnZulAnhaengerLastGebrem: string read FTechnZulAnhaengerLastGebrem write FTechnZulAnhaengerLastGebrem; property TechnZulAnhaengerLastUngebrem: string read FTechnZulAnhaengerLastUngebrem write FTechnZulAnhaengerLastUngebrem; property LeistungsGew: string read FLeistungsGew write FLeistungsGew; property LaengeMin: string read FLaengeMin write FLaengeMin; property LaengeMax: string read FLaengeMax write FLaengeMax; property BreiteMin: string read FBreiteMin write FBreiteMin; property BreiteMax: string read FBreiteMax write FBreiteMax; property HoeheMin: string read FHoeheMin write FHoeheMin; property HoeheMax: string read FHoeheMax write FHoeheMax; property StuetzLast: string read FStuetzLast write FStuetzLast; property BereifAchse1: string read FBereifAchse1 write FBereifAchse1; property BereifAchse2: string read FBereifAchse2 write FBereifAchse2; property GenehmigungsNr01: string read FGenehmigungsNr01 write FGenehmigungsNr01; property GenehmigungsDat01: string read FGenehmigungsDat01 write FGenehmigungsDat01; property BemerkungenAusnahmen: string read FBemerkungenAusnahmen write FBemerkungenAusnahmen; property Anmerkungen: string read FAnmerkungen write FAnmerkungen; property TxAnbringFzidnr: string read FTxAnbringFzidnr write FTxAnbringFzidnr; property Baumuster: string read FBaumuster write FBaumuster; property TxGetrTyp: string read FTxGetrTyp write FTxGetrTyp; property FelgeAchse1: string read FFelgeAchse1 write FFelgeAchse1; property FelgeAchse2: string read FFelgeAchse2 write FFelgeAchse2; end; type TKbaDataResult = class(TObject) private FSearchKey: string; FTooMuchResults: Boolean; FNumberOfResults: Integer; FNumberOfPossibleResults: Integer; FFoundData: TArray<TecRmiData>; public constructor Create; destructor Destroy; override; published property SearchKey: string read FSearchKey write FSearchKey; property TooMuchResults: Boolean read FTooMuchResults write FTooMuchResults; property NumberOfResults: Integer read FNumberOfResults write FNumberOfResults; property NumberOfPossibleResults: Integer read FNumberOfPossibleResults write FNumberOfPossibleResults; property FoundData: TArray<TecRmiData> read FFoundData; end;
Code:
t := TKbaDataResult.Create;
valid := ObjectLoadJson(t, StringToUtf8(restRequest.Response.JSONText), TKbaDataResult); |
AW: REST.Json extrem langsam?
Zitat:
Delphi-Quellcode:
PS: Bitte verweise im mORMot Forum auf diesen Thread und schließe deine
unit frm_Main;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, mormot.core.base, mormot.core.data, mormot.core.json, mormot.core.rtti, mormot.core.test, mormot.core.perf, mormot.core.os; type {$M+} TecRmiData = class private FTypeId: string; FTcdTypeId: string; FHerstSchluessel: string; FTypSchluessel: string; FVvs_Schluessel: string; FTypVvsPruefziffer: string; FFahrzeugklasse: string; FCodeAufbau: string; FFabrikMarke: string; FAmtlKlartextTyp: string; FVariante: string; FVersion: string; FHandelsName: string; FHerstText: string; FAmtlKlartextaufbau: string; FTxtKraftstoffKurz: string; FCodeKraftstoff: string; FHubraum: string; FAnzAchsen: string; FAbgasrichtlTg: string; FNationaleEmiklasse: string; FAntriebsachs: string; FNennleistungKw4: string; FNennleistungElektro30Min: string; FHoechstgeschwindigkeit: string; FAnzahlSitze: string; FMasseFahrbereitMin: string; FMasseFahrbereitMax: string; FTechZulGesamtMasse: string; FZulMaxAchsLast1: string; FZulMaxAchsLast2: string; FCo2Kombi: string; FStandgeraeusch3: string; FDrehStandgeraeusch: string; FFahrgeraeusch3: string; FTechnZulAnhaengerLastGebrem: string; FTechnZulAnhaengerLastUngebrem: string; FLeistungsGew: string; FLaengeMin: string; FLaengeMax: string; FBreiteMin: string; FBreiteMax: string; FHoeheMin: string; FHoeheMax: string; FStuetzLast: string; FBereifAchse1: string; FBereifAchse2: string; FGenehmigungsNr01: string; FGenehmigungsDat01: string; FBemerkungenAusnahmen: string; FAnmerkungen: string; FTxAnbringFzidnr: string; FBaumuster: string; FTxGetrTyp: string; FFelgeAchse1: string; FFelgeAchse2: string; published property TypeId: string read FTypeId write FTypeId; property TcdTypeId: string read FTcdTypeId write FTcdTypeId; property HerstSchluessel: string read FHerstSchluessel write FHerstSchluessel; property TypSchluessel: string read FTypSchluessel write FTypSchluessel; property Vvs_Schluessel: string read FVvs_Schluessel write FVvs_Schluessel; property TypVvsPruefziffer: string read FTypVvsPruefziffer write FTypVvsPruefziffer; property Fahrzeugklasse: string read FFahrzeugklasse write FFahrzeugklasse; property CodeAufbau: string read FCodeAufbau write FCodeAufbau; property FabrikMarke: string read FFabrikMarke write FFabrikMarke; property AmtlKlartextTyp: string read FAmtlKlartextTyp write FAmtlKlartextTyp; property Variante: string read FVariante write FVariante; property Version: string read FVersion write FVersion; property HandelsName: string read FHandelsName write FHandelsName; property HerstText: string read FHerstText write FHerstText; property AmtlKlartextaufbau: string read FAmtlKlartextaufbau write FAmtlKlartextaufbau; property TxtKraftstoffKurz: string read FTxtKraftstoffKurz write FTxtKraftstoffKurz; property CodeKraftstoff: string read FCodeKraftstoff write FCodeKraftstoff; property Hubraum: string read FHubraum write FHubraum; property AnzAchsen: string read FAnzAchsen write FAnzAchsen; property AbgasrichtlTg: string read FAbgasrichtlTg write FAbgasrichtlTg; property NationaleEmiklasse: string read FNationaleEmiklasse write FNationaleEmiklasse; property Antriebsachs: string read FAntriebsachs write FAntriebsachs; property NennleistungKw4: string read FNennleistungKw4 write FNennleistungKw4; property NennleistungElektro30Min: string read FNennleistungElektro30Min write FNennleistungElektro30Min; property Hoechstgeschwindigkeit: string read FHoechstgeschwindigkeit write FHoechstgeschwindigkeit; property AnzahlSitze: string read FAnzahlSitze write FAnzahlSitze; property MasseFahrbereitMin: string read FMasseFahrbereitMin write FMasseFahrbereitMin; property MasseFahrbereitMax: string read FMasseFahrbereitMax write FMasseFahrbereitMax; property TechZulGesamtMasse: string read FTechZulGesamtMasse write FTechZulGesamtMasse; property ZulMaxAchsLast1: string read FZulMaxAchsLast1 write FZulMaxAchsLast1; property ZulMaxAchsLast2: string read FZulMaxAchsLast2 write FZulMaxAchsLast2; property Co2Kombi: string read FCo2Kombi write FCo2Kombi; property Standgeraeusch3: string read FStandgeraeusch3 write FStandgeraeusch3; property DrehStandgeraeusch: string read FDrehStandgeraeusch write FDrehStandgeraeusch; property Fahrgeraeusch3: string read FFahrgeraeusch3 write FFahrgeraeusch3; property TechnZulAnhaengerLastGebrem: string read FTechnZulAnhaengerLastGebrem write FTechnZulAnhaengerLastGebrem; property TechnZulAnhaengerLastUngebrem: string read FTechnZulAnhaengerLastUngebrem write FTechnZulAnhaengerLastUngebrem; property LeistungsGew: string read FLeistungsGew write FLeistungsGew; property LaengeMin: string read FLaengeMin write FLaengeMin; property LaengeMax: string read FLaengeMax write FLaengeMax; property BreiteMin: string read FBreiteMin write FBreiteMin; property BreiteMax: string read FBreiteMax write FBreiteMax; property HoeheMin: string read FHoeheMin write FHoeheMin; property HoeheMax: string read FHoeheMax write FHoeheMax; property StuetzLast: string read FStuetzLast write FStuetzLast; property BereifAchse1: string read FBereifAchse1 write FBereifAchse1; property BereifAchse2: string read FBereifAchse2 write FBereifAchse2; property GenehmigungsNr01: string read FGenehmigungsNr01 write FGenehmigungsNr01; property GenehmigungsDat01: string read FGenehmigungsDat01 write FGenehmigungsDat01; property BemerkungenAusnahmen: string read FBemerkungenAusnahmen write FBemerkungenAusnahmen; property Anmerkungen: string read FAnmerkungen write FAnmerkungen; property TxAnbringFzidnr: string read FTxAnbringFzidnr write FTxAnbringFzidnr; property Baumuster: string read FBaumuster write FBaumuster; property TxGetrTyp: string read FTxGetrTyp write FTxGetrTyp; property FelgeAchse1: string read FFelgeAchse1 write FFelgeAchse1; property FelgeAchse2: string read FFelgeAchse2 write FFelgeAchse2; end; {$M-} TecRmiDataDynArray = array of TecRmiData; type {$M+} TKbaDataResult = class(TObject) private FSearchKey: string; FTooMuchResults: Boolean; FNumberOfResults: Integer; FNumberOfPossibleResults: Integer; FFoundData: TecRmiDataDynArray; public destructor Destroy; override; published property SearchKey: string read FSearchKey write FSearchKey; property TooMuchResults: Boolean read FTooMuchResults write FTooMuchResults; property NumberOfResults: Integer read FNumberOfResults write FNumberOfResults; property NumberOfPossibleResults: Integer read FNumberOfPossibleResults write FNumberOfPossibleResults; property FoundData: TecRmiDataDynArray read FFoundData; end; {$M-} type TfrmMain = class(TForm) btnSpeed: TButton; procedure btnSpeedClick(Sender: TObject); private FTimer: TPrecisionTimer; public end; var frmMain: TfrmMain; implementation {$R *.dfm} destructor TKbaDataResult.Destroy; begin ObjArrayClear(FFoundData); inherited Destroy; end; procedure TfrmMain.btnSpeedClick(Sender: TObject); begin var data: TKbaDataResult := TKbaDataResult.Create; try var jsonFileName: TFileName := ChangeFileExt(Executable.ProgramFileName, '.json'); var json: RawJson := StringFromFile(jsonFileName); if json = '' then begin SetLength(data.FFoundData, 500); for var i: Integer := 0 to High(data.FFoundData) do begin data.FFoundData[i] := TecRmiData.Create; for var run: TRttiCustomProp in Rtti.ByClass[TecRmiData].Props.List do run.SetValueText(data.FFoundData[i], TSynTestCase.RandomIdentifier(10 + Random(20))); end; if ObjectToJsonFile(data, jsonFileName) then json := StringFromFile(jsonFileName); end; FTimer.Start; if ObjectLoadJson(data, json) then ShowMessage(Format('Total time Delphi: %s', [FTimer.Time])); finally data.Free; end; end; initialization Rtti.RegisterObjArrays([ TypeInfo(TecRmiDataDynArray), TecRmiData]); end. ![]() Bis bald... Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz