Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi JSONValue zu wenig Arbeitsspeicher bei Array von 100MB (https://www.delphipraxis.net/207352-jsonvalue-zu-wenig-arbeitsspeicher-bei-array-von-100mb.html)

stalkingwolf 17. Mär 2021 07:26

AW: JSONValue zu wenig Arbeitsspeicher bei Array von 100MB
 
Zitat:

Zitat von Bbommel (Beitrag 1485304)
Das ist keine REST-Kompression, sondern eine Kompression auf dem Transportweg. Das soll dafür sorgen, dass die Daten schneller beim Client landen, ändert aber speziell in deinem Fall nichts an der Größe des Arrays im Speicher.

schon klar, es war eher salopp ausgedrückt.

Mit der Kompression wollte ich auch eher die Geschwindigkeit des Transports erhöhen oder einmal testen ob es ein Unterschied ergibt.

nur mal so. 144MB über 1Gbit Netzwerk ( ca 30 Dateien ) dauern 56sek. Das ist ne Hausnummer.
Auf dem Android Tablet was im WLAN hängt dauert es sogar 2min.
Auch Test z.b im RESTClient von Firefox ist nicht schneller.

Zitat:

Zitat von mytbo (Beitrag 1485305)
Hätte ein paar allgemeine Fragen. Du schreibst FMX aber nicht welche Plattform. Könnt/wollt ihr Fremdkomponenten einsetzen? Wie sieht das Schema der JSON-Datei (ein Objekt) aus?

Bis bald...
Thomas

Ich teste das ganze unter Windows, aber nachher läuft dies auf Android. Fremdkomponente brauche ich dafür nun nicht.

TiGü 17. Mär 2021 09:30

AW: JSONValue zu wenig Arbeitsspeicher bei Array von 100MB
 
Zitat:

...aber nachher läuft dies auf Android.
Wenn ihr nicht die Binary-Daten aus dem JSON schmeißt, ist das Projekt zum Scheitern verurteilt.

stalkingwolf 17. Mär 2021 10:26

AW: JSONValue zu wenig Arbeitsspeicher bei Array von 100MB
 
Zitat:

Zitat von TiGü (Beitrag 1485331)
Zitat:

...aber nachher läuft dies auf Android.
Wenn ihr nicht die Binary-Daten aus dem JSON schmeißt, ist das Projekt zum Scheitern verurteilt.

Naja das Projekt läuft schon seit ein paar Jahren und das bisher ohne Probleme.
Die meisten unserer Kunden haben auch nur ein paar Dateien und meistens kleinere PNG oder PDF Dateien.

Wir haben nur nun einen Kunden der relativ viele Dateien runterlädt.
Das ist auch nur ein einmaliger Vorgangs morgens. Wenn der ein paar Minuten dauert ist das aktuell nicht so tragisch.

aber ich habe es hier intern schon besprochen das wir dafür eine andere Lösung benötigen.
Danke für das ganze Feedback.

Union 17. Mär 2021 12:20

AW: JSONValue zu wenig Arbeitsspeicher bei Array von 100MB
 
Wie bereits erwähnt, könntest Du mit TJSONTextReader beliebig große Daten sequentiell verarbeiten, ohne das gesamte JSON in mehrere riesige Objekte umwandeln zu müssen. Als Input würde der Responsestream verwendet. Hier ein Beispiel (mit Datei als Input):

Delphi-Quellcode:
var
  TextReader : TJsonTextReader;
  StreamReader : TStreamReader;
begin
  StreamReader := TStreamReader.Create(FFileName);
  try
    TextReader := TJsonTextReader.Create(StreamReader);
    try
      ConvertSequential(TextReader);
    finally
      TextReader.Free;
    end;
  finally
    StreamReader.Free;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz