AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi JSONValue zu wenig Arbeitsspeicher bei Array von 100MB

JSONValue zu wenig Arbeitsspeicher bei Array von 100MB

Ein Thema von stalkingwolf · begonnen am 16. Mär 2021 · letzter Beitrag vom 17. Mär 2021
Antwort Antwort
Seite 3 von 3     123
stalkingwolf

Registriert seit: 6. Mai 2011
401 Beiträge
 
#21

AW: JSONValue zu wenig Arbeitsspeicher bei Array von 100MB

  Alt 17. Mär 2021, 08:26
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.

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.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
2.811 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#22

AW: JSONValue zu wenig Arbeitsspeicher bei Array von 100MB

  Alt 17. Mär 2021, 10:30
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.
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
401 Beiträge
 
#23

AW: JSONValue zu wenig Arbeitsspeicher bei Array von 100MB

  Alt 17. Mär 2021, 11:26
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.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.347 Beiträge
 
Delphi 7 Enterprise
 
#24

AW: JSONValue zu wenig Arbeitsspeicher bei Array von 100MB

  Alt 17. Mär 2021, 13:20
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;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf