Skip to content
  • Kategorien
  • Aktuell
  • Tags
  • Beliebt
  • Benutzer
  • Gruppen
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
MediathekView Logo

MediathekView-Forum

  1. Übersicht
  2. Entwicklerforum
  3. Vorschlag zum 1. Filmliste-Objekt in der Filmliste

Vorschlag zum 1. Filmliste-Objekt in der Filmliste

Geplant Angeheftet Gesperrt Verschoben Entwicklerforum
14 Beiträge 7 Kommentatoren 475 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    Dexli
    schrieb am zuletzt editiert von
    #1

    Moin,
    Ich habe einen Vorschlag zu dem ersten “Filmliste” Objekt (oder wie man da auch nennen mag) der Filmliste

    "Filmliste":["04.03.2025, 11:34","04.03.2025, 10:34","3","MSearch [Vers.: 3.1.247]","54de128049a7aa2bfb3b935e158dfbb2"]
    

    Ich finde es sehr hilfreich, wenn dort auch die Anzahl der Filme in der Liste zu finden wäre.

    Begründung:
    Es vereinfacht die Allokation einer entsprechenden Struktur sehr, da sofort der Speicher für ein Vector/Liste der entsprechenden Länge auf einmal alloziert werden kann und diese nicht durch x-tausendfaches append wachsen muß.

    Die entsprechende Eigenschaft sollte zum Zeitpunkt an dem die Liste geschrieben wird bekannt sein und recht einfach in das Objekt einzufügen sein.

    Mit freundlichen Grüßen
    Dexli

    1 Antwort Letzte Antwort
    • vitussonV Offline
      vitussonV Offline
      vitusson
      schrieb am zuletzt editiert von vitusson
      #2

      Einfach ein beherztes
      awk -v RS="\"X\"" 'END{print "Anzahl Filme: "NR -1}' filme.json
      und du hast die Zahl.

      1 Antwort Letzte Antwort
      • D Offline
        D Offline
        Dexli
        schrieb am zuletzt editiert von
        #3

        IMoin,
        es ist immer wieder interessant wie man missverstanden werden kann. 😞

        Es geht nicht darum das es nicht möglich ist die Anzahl der Filme irgendwie zu erhalten. Sondern dasrum das Prg mit ganz wenig Aufwand weniger aufwändig und schneller zu machen.

        Mit freundlichen Grüßen
        Dexli

        vitussonV 1 Antwort Letzte Antwort
        • mac-christianM Offline
          mac-christianM Offline
          mac-christian
          schrieb am zuletzt editiert von
          #4

          Muss ich verstehen, weshalb ein Programm schneller wird, wenn es mehr Funktionen enthält?

          D 1 Antwort Letzte Antwort
          • P Offline
            P Offline
            pidoubleyou Entwickler
            schrieb am zuletzt editiert von
            #5

            Die Änderung werden wir nicht umsetzen, weil keiner der von uns gewarteten Clients die Änderung benötigt und eine Änderung am Dateiformat unnötiges Risiko bei den Clients erzeugt.

            Des Weiteren wollen wir das Dateiformat lieber früher als später loswerden und auf ein moderneres und leichter erweiterbares Format setzen.

            1 Antwort Letzte Antwort
            • vitussonV Offline
              vitussonV Offline
              vitusson
              antwortete auf Dexli am zuletzt editiert von
              #6

              @Dexli sagte in Vorschlag zum 1. Filmliste-Objekt in der Filmliste:

              IMoin,
              es ist immer wieder interessant wie man missverstanden werden kann. 😞

              Es geht nicht darum das es nicht möglich ist die Anzahl der Filme irgendwie zu erhalten. Sondern dasrum das Prg mit ganz wenig Aufwand weniger aufwändig und schneller zu machen.

              Mit freundlichen Grüßen
              Dexli

              Sag einfach klar was du vor hast und was du brauchst und warum und du bekommst auch bessere Antworten.
              Aber einfach immer nur Wünsche mit ein paar snippets einwerfen und sich dann beschweren geht halt auch.

              1 Antwort Letzte Antwort
              • D Offline
                D Offline
                Dexli
                antwortete auf mac-christian am zuletzt editiert von Dexli
                #7

                Moin,

                @mac-christian

                Muss ich verstehen, weshalb ein Programm schneller wird, wenn es mehr Funktionen enthält?

                Man braucht keine zusätzliche Funktion, sonder lediglich eine schon vorhandene Funktion um das Herausschreiben eines zusätzlichen (aber vorhandenen ) Wertes erweitern und wenn man die Information bei Einlesen nicht nutzen will diese einfach zu ignorieren.

                Wie schon oben beschrieben, ermöglicht dieser Wert es beim Einlesen einen Teil des benötigten Speichers in einem Rutsch zu allozieren und nicht bei jedem Einfügen zu testen ob man weiteren Speicher braucht und ggf. mehrfach Speicher in anderen Speicherbereichen zu allozieren und den schon vorhandenen Speicher zu kopieren, bzw. die Speicherfragmente zu verwalten. Bei kleinen Listen würde das sicher nicht so ins Gewicht fallen, bei der großen Anzahl der Filme > 800K macht das schon einen Unterschied. (Obwohl MV schon deutlich schneller geworden ist)

                @pidoubleyou

                Die Änderung werden wir nicht umsetzen, weil keiner der von uns gewarteten Clients die Änderung benötigt und eine Änderung am Dateiformat unnötiges Risiko bei den Clients erzeugt.

                Das ist ein gutes Argument! Bei Projekten die mit der Zeit generisch gewachsen sind, hat man immer mit Altlasten zu kämpfen, die gewisse Instabilitäten/Inkonsistenzen erzeugen.

                Des Weiteren wollen wir das Dateiformat lieber früher als später loswerden und auf ein moderneres und leichter erweiterbares Format setzen.

                Auch das ist ein guter Grund! Gibt es schon entsprechende Diskussionen was euch da vorschwebt?
                Was mir in diesem Zusammenhang auffällt ist, z.B die große Redundanz bezüglich der URLs. So taucht der String nrodlzdf-a.akamaihd.net/none/ alleine schon min über 135000 mal auf, andere Strings wie
                ‘nrodlzdf-a.akamaihd.net/none/’ oder ‘nrodlzdf-a.akamaihd.net/none’ jeweils mehrere zig-tausend mal.
                Ein neues Format könnte solche Redundanzen intelligent ausnutzen um eine Menge Platz zu sparen.

                @vitusson
                MIr ist die aktuelle Gui zu groß (auch die Speichernutzung) und zu unflexibel was die Suche angeht. Das Bashscript ist was die Suche angeht schon gut, aber eben ein commandline tool. Daher habe ich für mich überlegt eine C/C++ Lib zu bauen die unabhängig von einer Gui das Handling der Filmliste und der Suche realisiert. Eine Basis Gui würde ich mit QT realisieren. Das wäre aber erstmal ein reines Hobbyprojekt für mich , welches ich erst veröffentlich würde wenn es einen halbwegs stabilen Zustand erreicht hätte.

                Im übrigen habe ich mich nicht beschwert, denn wenn man fragte “wie spät ist es” und die Antwort “Drei Euro Fünfzig” ist, dann liegt einfach ein Missverständniss vor 😉

                Um das Ganze aber abzuschließen, da der Vorschlag anscheinend keine Chance hat umgesetzt zu werden, werde ich das anders umsetzen müssen.
                Was das angestrebte neue Format angeht, fände ich es schön wenn es Informationen zu der angedachten Richtung gäbe.

                Viele Grüße und ein schönes Wochenende

                Dexli
                Edit: typo

                DaDirnbocherD D 2 Antworten Letzte Antwort
                • DaDirnbocherD Offline
                  DaDirnbocherD Offline
                  DaDirnbocher
                  antwortete auf Dexli am zuletzt editiert von
                  #8

                  @Dexli sagte in Vorschlag zum 1. Filmliste-Objekt in der Filmliste:

                  MIr ist die aktuelle Gui zu groß (auch die Speichernutzung) und zu unflexibel was die Suche angeht

                  Du kennst die “Moderne Suche” in MV? Du hast diese aktiviert? Und die ist Dir zu unflexibel?

                  1 Antwort Letzte Antwort
                  • D Offline
                    D Offline
                    DerReisende77 Entwickler
                    antwortete auf Dexli am zuletzt editiert von
                    #9

                    @Dexli sagte in Vorschlag zum 1. Filmliste-Objekt in der Filmliste:

                    Wie schon oben beschrieben, ermöglicht dieser Wert es beim Einlesen einen Teil des benötigten Speichers in einem Rutsch zu allozieren und nicht bei jedem Einfügen zu testen ob man weiteren Speicher braucht und ggf. mehrfach Speicher in anderen Speicherbereichen zu allozieren und den schon vorhandenen Speicher zu kopieren, bzw. die Speicherfragmente zu verwalten. Bei kleinen Listen würde das sicher nicht so ins Gewicht fallen, bei der großen Anzahl der Filme > 800K macht das schon einen Unterschied. (Obwohl MV schon deutlich schneller geworden ist)

                    Ich glaube Du betreibst hier micro optimization die nicht notwendig ist. Eine eben getestete Filmliste mit 837880 Einträgen belegt in Java laut Profiler 54 MB RAM.
                    Mit einem privaten C++ Programm verarbeite ich die Liste auf meinem Laptop ohne irgendwelche Optimierungen entspannt unter 2 Sekunden.
                    Letztendlich hängt das ganze aber auch davon ab wieviel Verarbeitung du durchführst.
                    Ich habe einen quick&dirty Benchmark mal für dein Problem gemacht welcher je nach Verarbeitungsaufwand entweder gleich schnell ist mit preallocation bzw. 1,4x schneller. Am Ende glaube ich persönlich ist es aber total egal. Zumal es auch stark abhängig ist ob man MSVC compiler oder gcc/clang verwendet.

                    Daneben ist bei MV nicht das parsen das “Problem”, sondern das filtern und vor allem das darstellen des Modells durch die Swing Tabelle.

                    Was mir in diesem Zusammenhang auffällt ist, z.B die große Redundanz bezüglich der URLs. So taucht der String nrodlzdf-a.akamaihd.net/none/ alleine schon min über 135000 mal auf, andere Strings wie
                    ‘nrodlzdf-a.akamaihd.net/none/’ oder ‘nrodlzdf-a.akamaihd.net/none’ jeweils mehrere zig-tausend mal.
                    Ein neues Format könnte solche Redundanzen intelligent ausnutzen um eine Menge Platz zu sparen.

                    Dafür hat Gott Verrückte erschaffen die Kompressionsalgorithmen basteln. Die schaffen es auch jetzt schon, die 598MB große Filmliste auf 92 MB einzudampfen. Das wird beim Download ja schon so praktiziert. Von daher ist es aus meiner Sicht unnötig da etwas kompliziertes selbst zu basteln was wenig zusätzlichen Benefit liefert.

                    Open source developers do NOT have to:

                    • Make your issue a priority, just because you say so.
                    • Give you any sort of "timetable", or explanation for why it´s "taking too long".

                    Check your entitlement. Nobody owes you anything.

                    D 1 Antwort Letzte Antwort
                    • D Offline
                      D Offline
                      Dexli
                      antwortete auf DerReisende77 am zuletzt editiert von
                      #10

                      Moin,

                      @DerReisende77 sagte in Vorschlag zum 1. Filmliste-Objekt in der Filmliste:

                      Ich glaube Du betreibst hier micro optimization die nicht notwendig ist.

                      Das kann ich erst sagen wenn ich das mal ausprobiert habe 😉

                      Eine eben getestete Filmliste mit 837880 Einträgen belegt in Java laut Profiler 54 MB RAM.

                      Wenn ich das mal grob überschlage, glaube ich nicht, dass Du da alle 837880 Einträge gleichzeitig im Speicher hast.

                      Mit einem privaten C++ Programm verarbeite ich die Liste auf meinem Laptop ohne irgendwelche Optimierungen entspannt unter 2 Sekunden.

                      Das kommt sicher auch auf die Maschine an.

                      Letztendlich hängt das ganze aber auch davon ab wieviel Verarbeitung du durchführst.

                      Welche Verarbeitung führst Du denn bei deinem privaten Prg durch ?

                      Ich habe einen quick&dirty Benchmark mal für dein Problem gemacht welcher je nach Verarbeitungsaufwand entweder gleich schnell ist mit preallocation bzw. 1,4x schneller.

                      Ich habe mir das mal angesehen und ich komme auf den Faktor 1,5 was letzten Endes 50% wäre. Dabei ist der Faktor extrem davon abhängig wie der Zufallsstring erzeugt wird, was nicht daür spricht das der Benchmark die (Pre)Allocation abbildet.
                      Leider kenne ich das Tool nicht und habe auch keine brauchbare Dokumentation gefunden. Daher bin daran gescheitert einmal einen globalen Film-Vektor zu erzeugen, der dann von beiden Routinen als Quelle genutzt wird.

                      Am Ende glaube ich persönlich ist es aber total egal. Zumal es auch stark abhängig ist ob man MSVC compiler oder gcc/clang verwendet.

                      Auch wenn ich Dir rechtgebe das der verwendete Kompiler einen nicht zu unterschätzenden Einfluss hat, ist es wie überall, Kleinvieh macht aus Mist. Hier mal 30% dort weitere 10 … In der Summe macht es dann doch einen nennenswerten Unterschied. Hinzukommt, das diese Unterschiede sich um so stärker auswirken je leistungsschwacher der Rechner ist. (z.B. ein RasPi)

                      Daneben ist bei MV nicht das parsen das “Problem”, sondern das filtern und vor allem das darstellen des Modells durch die Swing Tabelle.

                      Da ich mich mit Java nur sehr rudimentär (eigentlich garnicht, vor über 20 Jahren mal was damit gemacht) auskenne glaube ich das sofort.

                      Was mir in diesem Zusammenhang auffällt ist, z.B die große Redundanz bezüglich der URLs. So taucht der String nrodlzdf-a.akamaihd.net/none/ alleine schon min über 135000 mal auf, andere Strings wie
                      ‘nrodlzdf-a.akamaihd.net/none/’ oder ‘nrodlzdf-a.akamaihd.net/none’ jeweils mehrere zig-tausend mal.
                      Ein neues Format könnte solche Redundanzen intelligent ausnutzen um eine Menge Platz zu sparen.

                      Dafür hat Gott Verrückte erschaffen die Kompressionsalgorithmen basteln.

                      grins ja die sind schon Klasse!
                      Allerdings ist dabei das Problem, dass man (nach meinem Kenntnisstand) nur sequenziell damit arbeiten kann und nicht auf direkt auf Element N-M zugreifen kann.

                      Die schaffen es auch jetzt schon, die 598MB große Filmliste auf 92 MB einzudampfen. Das wird beim Download ja schon so praktiziert. Von daher ist es aus meiner Sicht unnötig da etwas kompliziertes selbst zu basteln was wenig zusätzlichen Benefit liefert.

                      So kompliziert wäre das m.E. nach nicht. Sowas ähnliches macht ihr ja schon, wenn man das konsequent weiter denkt hat man eine Liste mit den Strings mit denen die URLs beginnen. Der Index auf diese Liste wäre dann einfach ein uint16 für jedes URL-Feld.

                      Aber wie schon mal gefragt, in welche Richtung soll sich das neue Format entwickeln ?

                      Viele Grüße
                      Dexli

                      1 Antwort Letzte Antwort
                      • D Offline
                        D Offline
                        DerReisende77 Entwickler
                        schrieb am zuletzt editiert von
                        #11

                        @Dexli sagte in Vorschlag zum 1. Filmliste-Objekt in der Filmliste:

                        Moin,

                        @DerReisende77 sagte in Vorschlag zum 1. Filmliste-Objekt in der Filmliste:

                        Eine eben getestete Filmliste mit 837880 Einträgen belegt in Java laut Profiler 54 MB RAM.

                        Wenn ich das mal grob überschlage, glaube ich nicht, dass Du da alle 837880 Einträge gleichzeitig im Speicher hast.

                        Wenn ich das nicht überschlage sondern mit einem Profiler messe glaube ich dem das schon ziemlich genau. Davon abgesehen kann man das sehr leicht nachrechnen:
                        54MB = 56623104 bytes; 56623104 / 837880 =67,579 bytes pro DatenFilm Objekt.
                        Mit einem weiteren freundlichen Java Tool kann ich folgendes rausfinden:
                        Bildschirmfoto 2025-03-11 um 22.17.58.jpg

                        Huch, die JavaVM sagt meine Instanz braucht nur 64 bytes. Also alles kein Glaube sondern Wissen 😉

                        Mit einem privaten C++ Programm verarbeite ich die Liste auf meinem Laptop ohne irgendwelche Optimierungen entspannt unter 2 Sekunden.

                        Das kommt sicher auch auf die Maschine an.
                        Apple M1

                        Ich habe einen quick&dirty Benchmark mal für dein Problem gemacht welcher je nach Verarbeitungsaufwand entweder gleich schnell ist mit preallocation bzw. 1,4x schneller.

                        Ich habe mir das mal angesehen und ich komme auf den Faktor 1,5 was letzten Endes 50% wäre.

                        Ob Faktor 1,4 oder 1,5 ist egal, das Tool bildet die Mittelwerte aus der Leistungsfähigkeit der genutzten AWS Instanzen. Ist in der Hilfe dokumentiert.

                        Dabei ist der Faktor extrem davon abhängig wie der Zufallsstring erzeugt wird, was nicht daür spricht das der Benchmark die (Pre)Allocation abbildet.

                        Das ist doch genau der Punkt bei dem Benchmark! Wenn Du wenig Operationen beim Parsen zusätzlich durchführen musst kriegst du deine 40-50% mehr speed. Musst Du jedoch ein paar string ops durchführen (was sehr wahrscheinlich ist) geht der performance so schnell runter dass kein benefit mehr da ist. Und genau das zeigt der benchmark.

                        Aber wie schon mal gefragt, in welche Richtung soll sich das neue Format entwickeln ?

                        JSON wohl, ob als Dokument analog zur bisherigen Liste oder als document-based database steht noch nicht fest.

                        Open source developers do NOT have to:

                        • Make your issue a priority, just because you say so.
                        • Give you any sort of "timetable", or explanation for why it´s "taking too long".

                        Check your entitlement. Nobody owes you anything.

                        1 Antwort Letzte Antwort
                        • Georg-JG Offline
                          Georg-JG Offline
                          Georg-J
                          schrieb am zuletzt editiert von
                          #12

                          Wieso belegt die komprimierte Filmliste beim Download mehr Platz (92 MB) als im RAM (54 MB)?

                          1 Antwort Letzte Antwort
                          • D Offline
                            D Offline
                            DerReisende77 Entwickler
                            schrieb am zuletzt editiert von
                            #13

                            @Georg-J Falscher Ansatz. Du musst die unkomprimierte Liste als Vergleich heranziehen. Am Ende des Tages wird die Textliste gelesen und dann in Programmcode umgesetzt - der ist kleiner und natürlich optimierter.

                            Open source developers do NOT have to:

                            • Make your issue a priority, just because you say so.
                            • Give you any sort of "timetable", or explanation for why it´s "taking too long".

                            Check your entitlement. Nobody owes you anything.

                            1 Antwort Letzte Antwort
                            • D Offline
                              D Offline
                              Dexli
                              schrieb am zuletzt editiert von
                              #14

                              Sorry für das späte Reply, ging leider nicht früher.
                              68 Byte pro Eintrag, das deckt ja noch nicht einmal eine URL ab. Ich habe mal einen Eintrag ausgezählt und bin locker über 500 Byte gelandet.
                              Selbst wenn das nicht für alle Einträge gilt, sind die 68 Byte pro Eintrag garantiert nicht zu erreichen, es sei denn, man arbeitet mit einem Dictionary wie vorgeschlagen und im Eintrag mit Indizes darauf. und selbst dann wird es ausgesprochen knapp, denn bei 20 Feldern sind das 3,4 Byte pro Feld. Ich vermute mal das hier im Hintergrund die Funktion MMap genutzt wird die eine Datei transparent in den Speicher mappt.
                              Außerdem sind es nicht 54 MB sondern über 500 MB wie Du selber am 09.3.2025 geschrieben hast

                              Dafür hat Gott Verrückte erschaffen die Kompressionsalgorithmen basteln. Die schaffen es auch jetzt schon, die 598MB große Filmliste auf 92 MB einzudampfen.

                              Das ist doch genau der Punkt bei dem Benchmark! Wenn Du wenig Operationen beim Parsen zusätzlich durchführen musst kriegst du deine 40-50% mehr speed. Musst Du jedoch ein paar string ops durchführen (was sehr wahrscheinlich ist) geht der performance so schnell runter dass kein benefit mehr da ist. Und genau das zeigt der benchmark.

                              Also selbst wenn es nur 30% sind ist das m.E. eine signifikante Steigerung. Stringops im Speicher sind sehr schnell, Erzeugung von Zufallszahlen sind deutlich langsamer.

                              Viele Grüße
                              Dexli

                              1 Antwort Letzte Antwort

                              33

                              Online

                              6.6k

                              Benutzer

                              6.1k

                              Themen

                              38.9k

                              Beiträge
                              undefined
                              • Anmelden

                              • Du hast noch kein Konto? Registrieren

                              • Anmelden oder registrieren, um zu suchen
                              • Erster Beitrag
                                Letzter Beitrag
                              0
                              • Kategorien
                              • Aktuell
                              • Tags
                              • Beliebt
                              • Benutzer
                              • Gruppen