AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Alternative zu loadfromfile viele kleine Dateien

Alternative zu loadfromfile viele kleine Dateien

Ein Thema von bluescreen25 · begonnen am 19. Jul 2007 · letzter Beitrag vom 19. Jul 2007
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.027 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 13:00
Zitat von bluescreen25:
Eine große Datei würde schneller laden als die vielen kleinen.
Ist wirklich das Laden von Festplatte das Problem oder lädst du die Dateien in entsprechende TImage/TBitmap/...-Komponenten? von welchen Zeiten sprechen wir?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 13:13
@Bernhardt: Das ist wirklich das Problem. Ich habe auch bereits die Erfahrung gemacht dass, das einlesen mehrere Dateien sehr lange dauert. Selbst wenn man die Dateien nicht liest sondern immer nur öffnet und wieder schließt vergeht eine menge Zeit.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 13:17
Zitat von Bernhard Geyer:
Zitat von bluescreen25:
Eine große Datei würde schneller laden als die vielen kleinen.
Ist wirklich das Laden von Festplatte das Problem oder lädst du die Dateien in entsprechende TImage/TBitmap/...-Komponenten? von welchen Zeiten sprechen wir?
bis zu 30 sek Ladezeit bei einem schwachen Rechner PIII bis die Skinroutine aus der ini die einzelnen Button-Up und Button-Down Properties sowie im Grunde die gesamte Grafik von mehreren Forms zusammengebaut hat.(Background,Slider,Label,Buttons etc).
Bei einem PIV etwa 5-10 sek.

Etwa 250-300 Einzelgrafiken als png mit 5-100 Kb und etwa Gesamt 8 MB .

Ich nutze die pngimage-Kompo damit png' nutzbar sind, lade die Bilder mit Loadfromfile direkt in die Form.
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 13:22
Zitat von SirThornberry:
das einfachste ist du schreibst alle deine Skindateien hintereinander in die Datei und speicherst eben die Positionen in eine die Ini (oder sogar mit in diese Datei)

Folgendes ist ungetestet sollte aber funktionieren.
Delphi-Quellcode:
var
  lFile : TMemoryStream;
  lBigFile : TFileStream;
  lCount : Integer;
begin
  lFile := TMemoryStream.Create();
  lBigFile := TFileStream.Ceate(Filename, fmCreate);
  for lCount := 0 to DateiListe.Count - 1 do
  begin
    lFile.LoadFromFile(DateiListe.Strings[lCount];
    
    Ini.WriteString('Files', 'File' + IntToStr(lCount), DateiListe.Strings[lCount]);
    Ini.WriteInteger('Files', 'FilePos' + IntToStr(lCount), lBigFile.Position);
    Ini.WriteInteger('Files', 'FileSize' + IntToStr(lCount), lFile.Size);
    
    lFile.Position := 0;
    lBigFile.CopyFrom(lFile, lFile.Size);
  end;
  lBigFile.Free;
  lFile.Free;
end;
Mit Streams habe ich noch nichts gemacht. Kannst du mir die vorgehensweise hier noch etwas deutlicher erklären ?
Soll ich eine eigene Application schreiben, womit man alle im sagen wir mal einem best.Ordner befindlichen Dateien in eine zusammenfasst sowie eine ini erstellen lassen, die die Positionen angibt ? Dann im Hauptprogramm die ini auslesen und anhand der Positionen die eigendlichen Dateien innerhalb der erstellten BigDatei finden ??
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.027 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 13:23
Zitat von bluescreen25:
bis zu 30 sek Ladezeit bei einem schwachen Rechner PIII bis die Skinroutine aus der ini die einzelnen Button-Up und Button-Down Properties sowie im Grunde die gesamte Grafik von mehreren Forms zusammengebaut hat.(Background,Slider,Label,Buttons etc).
Ich denke nicht das das Laden der Dateien das Problem ist wenn jede Datei nur einmal geladen werden muss (und per Caching wiederverwendet wird). Ich würde mal auf das eigentliche Laden, sprich Datei "erkennen" und in Speicher laden auf < 1 Sekunde tippen. Vermutlich ist der Rest das eigentliche Problem das die Skinning-Lösung einfach zu viel CPU-Zeit verbrät ("Entpacken" PNG, ...). Mit AQTime (Evtl. reicht fürs erste die Trial-Version) sollte das in 1 Minute geklärt sein.

Mußt Du wirklich zum Programmstart alle 300 Dateien laden oder könnte das nicht incrementell erfolgen wenn die Dateien benötig werden?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 13:24
Zitat von franktron:
In der Codelib ist ein Programm zum zusammenfügen vieler kleiner Daten zu einer und ist auch recht schnell
Hmm ich schau mir das mal an hört sich gut an...muss die nur noch wieder ins Mainprogramm auslesen können....
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.027 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 13:25
Zitat von Bernhard Geyer:
Mit AQTime (Evtl. reicht fürs erste die Trial-Version) sollte das in 1 Minute geklärt sein.
Oder zuvor mal die CPU-Nutzung während Programmstart kontrollieren. Liegt die (für eine CPU) bei 100% so ist es m.E. definitiv nicht die Festplatten-Ladezeit welche das Problem verursacht.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 13:31
Zitat von Bernhard Geyer:
Zitat von bluescreen25:
bis zu 30 sek Ladezeit bei einem schwachen Rechner PIII bis die Skinroutine aus der ini die einzelnen Button-Up und Button-Down Properties sowie im Grunde die gesamte Grafik von mehreren Forms zusammengebaut hat.(Background,Slider,Label,Buttons etc).
Ich denke nicht das das Laden der Dateien das Problem ist wenn jede Datei nur einmal geladen werden muss (und per Caching wiederverwendet wird). Ich würde mal auf das eigentliche Laden, sprich Datei "erkennen" und in Speicher laden auf < 1 Sekunde tippen. Vermutlich ist der Rest das eigentliche Problem das die Skinning-Lösung einfach zu viel CPU-Zeit verbrät ("Entpacken" PNG, ...). Mit AQTime (Evtl. reicht fürs erste die Trial-Version) sollte das in 1 Minute geklärt sein.

Mußt Du wirklich zum Programmstart alle 300 Dateien laden oder könnte das nicht incrementell erfolgen wenn die Dateien benötig werden?
Wenn die benötigt werden und dann mit loadfromfile reinkommen, dann gibt es bei Menüwechsel (Formwechsel) kurze Denkpausen....mind. einmal um ein noch nicht geöffnetes Menü zu initialisieren ,deshalb haben wir ja die Dateien direkt eingelesen, damits nacher flüssig läuft.

Hatte alles ein Für und Wider...aber die flüssige Nutzung war erstmal wichtiger...

Enthalten im Programm sind ein Audio und Videoplayer und wenn die resumen und noch der Menüwechsel "neu" geladen werden muss, dann hakt es !

Die App sollte auch auf schwacheren PCs flüssig laufen, an Speicher haperts ja meist nicht , die CPUs sind teuer oder teilweise für diese Anwendung nicht lohnenswert aufrüstbar...
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 13:39
Zitat von Bernhard Geyer:
Zitat von Bernhard Geyer:
Mit AQTime (Evtl. reicht fürs erste die Trial-Version) sollte das in 1 Minute geklärt sein.
Oder zuvor mal die CPU-Nutzung während Programmstart kontrollieren. Liegt die (für eine CPU) bei 100% so ist es m.E. definitiv nicht die Festplatten-Ladezeit welche das Problem verursacht.
Die CPU-Last ist hoch, aber warum auch nicht ? Eingeschränkt sind die Skinladeroutinen für die einzelnen Parts wie Buttons oder Label durch Application.processmessage und somit kann man in Windows theoretisch noch was anderes machen. Die Laderoutine in einer Schleife darauf bedacht erst ein Menü zu initialisieren , dann alle Buttons zu setzen usw...

Setze ich keine Application.proc.... dann schafft ein fixer Rechner das in 4 Sek und ein langsamer etwa in 20 sek...nur dann kann ich Windows nicht mehr bedienen...
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.424 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Alternative zu loadfromfile viele kleine Dateien

  Alt 19. Jul 2007, 14:04
du könntest auch erstmal statt TIni... TMemIni verwenden ... TIni und Co. greifen jedesmal auf die WinAPI zu und die öffnen für jeden Wert die INI neu und lesen nur den einen Wert aus (wobei da natürlich alles vorherige jedesmal neu ausgewertet werden muß.

TMemIni ließt die Datei nur einmal in den Arbeitsspeicher und ließt dann von dort die Werte.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  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 +1. Es ist jetzt 00:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf