AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Beschleunigung von Laderoutine

Ein Thema von EWeiss · begonnen am 15. Aug 2016 · letzter Beitrag vom 17. Aug 2016
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 07:47
Warum speicherst Du das nicht zwischen?

Erzeuge Dir ein TDictionary mit den Covernamen und dem entsprechenden Bild und genauso das Dir...
Dann musst Du nur 1 Cover neu laden, rest is in Memory...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 09:22
Warum speicherst Du das nicht zwischen?

Erzeuge Dir ein TDictionary mit den Covernamen und dem entsprechenden Bild und genauso das Dir...
Dann musst Du nur 1 Cover neu laden, rest is in Memory...
Ich erzeuge ja schon zwei TStringList und speichere die Daten zwischen..

Ich bin noch am Testen ist nicht ganz so einfach.
Das letzte Cover macht mir Schwierigkeiten beim verschieben.

Delphi-Quellcode:
        for I := 0 to (aCovers.count - 1) do
        begin
          quadTexture[I] := quadTexture[I + 1];
Das letzte ist dann nicht mehr initialisiert weil es auf den vorherigen platz verschoben wurde.
Dementsprechend kann ich das auch nicht freigeben.. weil nicht mehr gültig.

Siehe Anhang! Anfang und Ende..

EDIT:
Unterumständen muss ich dann die länge des Arrays neu setzen also den 24 Eintrag entfernen.
Werde nochmal testen. (bringt nix)

gruss

Geändert von EWeiss (11. Jul 2019 um 15:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 09:54
OK- Ich verstehe nicht so ganz was Du da machst, aber eigentlich sollte das - so schnell sein, dass Du keine Verzögerung merkst... Von was sprechen wir hier?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 09:59
Nimm doch statt nem Array eine Liste. Das ist doch tausend mal einfacher als den Kram in Arrays rumzuschieben.
Außerdem ist die Zeile hier unnötig:
if aCovers.count > -1 then
Eine Liste hat immer mehr als -1 Einträge
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 10:16
Nimm doch statt nem Array eine Liste. Das ist doch tausend mal einfacher als den Kram in Arrays rumzuschieben.
Außerdem ist die Zeile hier unnötig:
if aCovers.count > -1 then
Eine Liste hat immer mehr als -1 Einträge
Ja du hast Recht Ka was mich da geritten hat..
> wie 0 dann halt ändert aber nichts an meinem Problem.

Und ja es ist eine Liste kein Array.. (obwohl die liste letztendlich auch aus einem besteht.)

Solltest du das Array QuadTexture meinen. Ja das ist ein Array auf GLUint und hat seine Berechtigung.
Ich habe keinen Bock zwischen Strings und GLUint herum zu jonglieren.


gruss

Geändert von EWeiss (16. Aug 2016 um 10:37 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 11:07
So geht's jetzt.
Mal sehen ob ich an anderer stelle noch was optimieren kann.

Delphi-Quellcode:
  // is ShowCover
  if ShowCover then
  begin
    if CoverPath <> 'then
    begin
      if CoverPath <> Path then
        ScanDirectory(CoverPath, 'jpg, jpeg, png', False);

      if aCovers.count > 0 then
        LstCoverPath.Clear;

      if (aCovers.count > QuadCount) then
      begin
        // delete first Cover
        aCovers.Delete(0);
        // move textures from destination to source
        for I := 0 to (aCovers.count - 1) do
        begin
          quadTexture[I] := quadTexture[I + 1];
          // add to List
          LstCoverPath.Add(aCovers[I]);
          // Load last Testure
          if I = (QuadCount - 1) then
          begin
            // extract Filename
            aFileName := ExtractFileName(aCovers[I]);
            // extract extension
            aFileName := Copy(aFileName, 1, Length(aFileName) - Length(ExtractFileExt(aFileName)));
            // uppercase
            aFileName := AnsiUpperCase(aFileName);

            Name := ExtractFileName(GetAlbumArtistName);
            if Name <> 'then
              Name := Copy(Name, 1, Length(Name) - Length(ExtractFileExt(Name)));
            if (aFileName = 'FOLDER') or (aFileName = Name) then
            begin
              if quadTexture[I] <> NoCoverTexture then
                glDeleteTextures(1, @quadTexture[I]);

              LoadTexture(aCovers[I], quadTexture[I], False);
            end;
          end;
        end;
      end
      else
      begin
        for I := 0 to (aCovers.count - 1) do
        begin
          // extract Filename
          aFileName := ExtractFileName(aCovers[I]);
          // extract extension
          aFileName := Copy(aFileName, 1, Length(aFileName) - Length(ExtractFileExt(aFileName)));
          // uppercase
          aFileName := AnsiUpperCase(aFileName);

          Name := ExtractFileName(GetAlbumArtistName);
          if Name <> 'then
            Name := Copy(Name, 1, Length(Name) - Length(ExtractFileExt(Name)));
          if (aFileName = 'FOLDER') or (aFileName = Name) then
          begin
            if quadTexture[I] = NoCoverTexture then
              LoadTexture(aCovers[I], quadTexture[I], False);

            // add to List
            LstCoverPath.Add(aCovers[I]);
          end;
        end; // end for i
      end;

      transAlpha := 1.0;
      if (LastAddCover = 0) or (LastAddCover = Round(NoCoverTexture)) then
        Result := False;
      if LstCoverPath.count <> 0 then
      begin
        InitAlbumIniPath;
        SaveINI;
      end;
    end;
  end; //end ShowCover
Danke für die Hilfe..

gruss

Geändert von EWeiss (16. Aug 2016 um 11:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 11:17
OK...

Warum speicherst Du nicht die fertigen Data's

Dann brauchst Du nur die Pointer um legen...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 11:31
OK...

Warum speicherst Du nicht die fertigen Data's

Dann brauchst Du nur die Pointer um legen...
Ich weiß jetzt nicht welche Daten du meinst die ich abspeichern soll.
Bei den Covers mache ich es ja schon.

Und wenn es am spielen ist ändern diese sich immer abhängig vom Album natürlich das gerade wechselt.
Es ist jetzt zumindest so das die Texturen wechseln wenn das Lied abspielt und nicht erst ein paar Sekunden später.

Nur am Anfang werden alle Covers geladen dann nur noch jeweils eins.

gruss

Geändert von EWeiss (16. Aug 2016 um 11:34 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 10:07
Zitat:
OK- Ich verstehe nicht so ganz was Du da machst
Sorry aber ich verstehe nicht was du meinst.
Auf der einen Seite sagst du verstehst es nicht was ich mache aber im gleichen Atemzug
gehst du davon aus
Zitat:
aber eigentlich sollte das - so schnell sein, dass Du keine Verzögerung merkst
Zitat:
Von was sprechen wir hier?
Davon das laden der Cover zu beschleunigen..

Wenn es schnell genug wäre hätte ich mir die Frage danach sparen können und euch damit nicht belästigt.

Das Problem ist das ich die Covers jedes Mal alle neu einlade.
Nun habe ich versucht die Texturen umzustrukturieren.
Die erste Texture wird gelöscht und diese dann mit der darauffolgendem neu gefüllt.
Das geht schnell ohne das ich alle Texturen neu laden muss.

Das Problem das aber nun auftaucht ist das dann die letzte Texture ungültig wird weil sie verschoben wurde.
Dies hat zur folge das beim laden der letzten Texture die Nummerierung nicht fortläuft.

Das laden von 25 Texturen nach jedem Liedwechsel verursacht in etwa eine Ladezeit von 2> Sekunden was mein Plugin quasi anhält.
Das will ich vermeiden.

gruss
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Beschleunigung von Laderoutine

  Alt 16. Aug 2016, 10:01
Wie sieht denn die LoadTexture-Methode aus?
Wäre es nicht auch zweckmäßig diese zu untersuchen, da du im ersten Post schreibst, das diese Methode blockt?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:34 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