atarionline.pl LZ4 na atari - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthorxxl
      • CommentTime7 Oct 2013 19:10 zmieniony
       
      ->link<-

      napisalem dekompresor LZ4 pod xbiosa



      dekompresor jest dosc szybki, malo zajmuje (zalezy - ok. 140 bajtow), dane zrodlowe nie znajduja sie w pamieci tylko w pliku, dekompresor nie potrzebuje tez bufora, i wlasciwie nie zajmuje tez strony zero :-)
      • 2: CommentAuthormuffy
      • CommentTime7 Oct 2013 20:10
       
      Jako że w temacie kompresji (i dekompresji tudzież) utknąłem w pewnym momencie, a nie było jeszcze tej metody na A8, to zapytuję. Jaki jest stopień kompresji np. plików graficznych i tekstowych i ileż cykli potrzeba na dekompresję np. plik tekstowy czysty 760 bajtów. (jakikolwiek).
      No i czy jest jakaś wersja depakera LZ4 do osadzenia w 1 pliku z danymi i programem. (do dowolnego dosa)
      • 3:
         
        CommentAuthorlaoo
      • CommentTime7 Oct 2013 20:10
       
      Właśnie pracuję teraz nad ładowaniem core'a FPGA Rapidusa z flashu, którego jest 256 kB, a rdzeń zajmuje 340884 bajty :)
      Wymyśliłem do tego celu dedykowany format kompresji, ale zapałałem teraz nadzieją, że to będzie lepsze. Niestety nie jest. Może dlatego, że moja kompresja specjalizuje się w kompresowaniu dużych połaci bajtów $00 i $FF przy stosunkowo dużej powtarzalności blisko sąsiadujących bloków (takie są rdzenie FPGA).
      Mam dwa różne rdzenie, które mój kompresor (którego można jeszcze podrasować o parę procent) kompresuje do 39993 oraz 40437 bajtów. LZ4 zrobił z tego 44098 oraz 44731 bajtów. Dekompresja (332 kB) trwa dokładnie 2.5 sekundy. Używa 5 zmiennych na stronie zerowej oraz 256 bajtów bufora na "notatki".
      Podejrzewam jednak, że ten LZ4 wyjdzie na prowadzenie, gdy zawartość rdzenia się bardziej skomplikuje i będzie w środku mniej jednolitych bloków.
      • 4: CommentAuthorxxl
      • CommentTime7 Oct 2013 20:10
       
      stopien kompresji przykladowo:
      druid z 7684 do 5870
      jaskinia z 7684 do 4934
      loading z 7684 do 871
      mostek z 7684 do 3942
      portret z 7684 do 5832
      spoon z 7684 do 1090

      pod linkiem, ktory dalem masz LZ4 pod windowsa mozesz sprawdzic. w testach wychodzi ze ma jeden z najszybszych dekompresorow.
      • 5:
         
        CommentAuthorlaoo
      • CommentTime7 Oct 2013 20:10 zmieniony
       
      Poprawiam się i zwracam honor :) Zauważyłem, że kompresor ma opcję "High compression", która kompresuje do 32724 oraz 32895 bajtów.

      XXL: jakbym podesłał Ci pliczek byłbyś w stanie określić jak szybko twój dekompresor by go rozpakował? Dekompresja jest uproszczona, bo trzeba zapisywać do jednego rejestru, więc odpada zabawa w przesuwanie wskaźnika wyjściowego (ale to oznacza, że nie ma się historii rozkompresowanych danych).
      • 6: CommentAuthorxxl
      • CommentTime7 Oct 2013 20:10 zmieniony
       
      a dane zrodlowe gdzie leza, w pamieci czy na dysku?

      moge sprawdzic. mozesz go spakowac na najwyzszym stopniu kompresji.

      ---
      zaraz... to kupa. dekompresor jest szybki bo moze kopiowac to co wczesniej odpakowal - w Twoim przypadku raczej sie nie nadaje.
      • 7:
         
        CommentAuthorlaoo
      • CommentTime7 Oct 2013 21:10
       
      Tak właśnie myślałem, że potrzebuje jednak jakiegoś bufora :)
      Teoretycznie można byłoby dzielić rdzeń na bloki po np. 16 kB i trzymać rozpakowany wynik w pamięci, ale to już bardzo komplikowałoby sprawę i obniżało poziom kompresji.

      W każdym bądź razie wysłałem Ci info na maila. Przyjrzę się temu formatowi. Może da się coś z niego wycisnąć.
      • 8: CommentAuthorpin
      • CommentTime7 Oct 2013 23:10
       
      ... przepraszam, że wtrącę niepotrzebną dygresję w ten wątek ale uważam że w znacznej części użycie dekompresora w przypadku A8 to (nie biorąc pod uwagę SIO) to strata czasu. Załadowanie takiego obrazka może zająć w najgorszym przypadku 0.1s (PBI). Chyba, że komuś faktycznie zależy, by ugnieść się w 64k i by chodziło to sensownie ze stacji. W takim przypadku tematu nie było ;)
      • 9: CommentAuthorxxl
      • CommentTime8 Oct 2013 00:10
       
      Z tym dekompresorem na twoim sprzecie nadal bedzie sie ladowal w 0.1 s, ale oprocz tego zmiesci sie na karcie, a jak ktos bedzie chcial to i na dyskietce a przy okazji zaladuje sie szybciej :)
      • 10:
         
        CommentAuthorxeen
      • CommentTime8 Oct 2013 10:10
       
      \o/

      To daje sporo nowych możliwości. Chylę czoła.
      • 11: CommentAuthorxxl
      • CommentTime8 Oct 2013 14:10
       
      Fox robil kiedys testy exomizera i deflatera ->link<-
      dzis w takich samych warunkach przeprowadzilem testy LZ4

      gpl3.txt - 35147 bajtów

      exomizer - 12382 bajty + depaker 1 strona =~ 12.3 KB, rozpakowanie 128 ramek (2.6 sekundy)

      deflate - 11559 bajtów + depaker 2 strony =~ 11.8 KB, rozpakowanie 179 ramek (3.6 sekundy)

      LZ4 - 15622 bajtow + depaker <150 bajtow =~ 15.3 KB, rozpakowanie 55 ramek (1,1 sekundy)
      • 12: CommentAuthor0xF
      • CommentTime8 Oct 2013 15:10
       
      Możnaby jeszcze spróbować Snappy
      • 13: CommentAuthorpin
      • CommentTime8 Oct 2013 22:10
       
      @XXL - no to jeśli to jest aż tak szybkie, to zwracam honor, bo faktycznie w przypadku carta ma to znaczenie ze względu na jego pojemność.
      • 14: CommentAuthorxxl
      • CommentTime10 Oct 2013 18:10
       
      dekompresor ma 132 bajty

      ->link<-
      • 15:
         
        CommentAuthorjhusak
      • CommentTime11 Oct 2013 01:10 zmieniony
       
      A kiedy będzie 128?

      A tak naprawdę to świetna nowina!

      Jaka była rola 0xF w projekcie?
      • 16: CommentAuthor0xF
      • CommentTime11 Oct 2013 09:10
       
      Cięcie bajtów i cykli. :)
      • 17: CommentAuthorxxl
      • CommentTime11 Oct 2013 09:10
       
      > A kiedy będzie 128?

      jesli umiescisz procke na stronie zero to zajmie 118 bajtow ;-)
      • 18: CommentAuthor0xF
      • CommentTime11 Oct 2013 10:10
       
      Nie trzeba tak radykalnie. Gdyby użyć zmiennych na stronie zero, np. src i token, to już by pewnie weszło w 128.
      • 19: CommentAuthorxxl
      • CommentTime11 Oct 2013 12:10
       
      przyklad uzycia: ->link<-
      • 20: CommentAuthornodez
      • CommentTime11 Oct 2013 19:10 zmieniony
       
      z tego co wiem to bracia komodorowcy juz sie tym lz4 zainteresowali :)
      • 21: CommentAuthorwegi
      • CommentTime24 Jan 2015 12:01
       
      Podziękowania za udostępnienie depakera lz4. W zamian załączam testy kilku cruncherów na moim wrednym pliku. Do odtworzenia przykładów z d64 potrzebny będzie Hoxs64 lub Vice z włączoną true drive emulation. Co do krótkości depakera nadmienię że to trochę ściemnianie, bo np. Do bongo najkrótsza wersja zajęła mi zdaje się $d4 bajtów i dalej można by go skracać gdyby założyć że dane są RAW. Niemniej jednak gdzieś trzeba podać depack addres, ustawić pointery. Czy robi to depaker, czy user i tak zejdzie na to kilka bajtów, ja wolę wygodę i jak mam plik spakowany, to już się nie interesuję gdzie go zdepakować, to zmartwienie depakera.