Results 1 to 8 of 8

Thread: Kitty file compressor (Super small compressor)

  1. #1
    Member snowcat's Avatar
    Join Date
    Apr 2015
    Location
    Vietnam
    Posts
    25
    Thanks
    33
    Thanked 11 Times in 8 Posts

    Kitty file compressor (Super small compressor)

    Hello,

    This is my second file compressor, actually it's an upgrade from my old Bit6.
    I call it super small because it only use 768 bytes RAM, fit almost any MCU (the only problem is 32 bit arithmetic in MCU :P )
    I include with an ASM version, and all of the compress / decompress engine cost only 280 bytes (x86 484+ code), small even like JQcoding with better compression, so it even can be use in virus :P

    It use 512 bytes for an modified StateMap from SR2, and 256 bytes to predict the next byte from the last byte of context.

    Some result:
    enwik8:
    100,000,000 -> 59,952,178
    enwik9:
    1,000,000,000 -> 602,865,931

    JQcoding: (http://encode.ru/threads/2157-Lookin...ll=1#post43099)
    SR2: (http://mattmahoney.net/dc/#sr2)
    Attached Files Attached Files

  2. The Following 2 Users Say Thank You to snowcat For This Useful Post:

    comp1 (25th April 2015),Gonzalo (26th April 2015)

  3. #2
    Member
    Join Date
    May 2012
    Location
    United States
    Posts
    317
    Thanks
    168
    Thanked 51 Times in 37 Posts
    Quick test with my WIN95 corpus:

    Code:
    WIN95.SHAR       | 58,194,746 | 
    WIN95.KITTY      | 33,326,515 | 5.93 s
    WIN95.SR2        | 26,036,376 | 2.48 s
    Last edited by comp1; 25th April 2015 at 23:15.

  4. The Following User Says Thank You to comp1 For This Useful Post:

    snowcat (26th April 2015)

  5. #3
    Member
    Join Date
    Aug 2014
    Location
    Argentina
    Posts
    464
    Thanks
    202
    Thanked 81 Times in 61 Posts
    Good one. But a bit slow for its low requirements, don't you think?

    Code:
    D:\>kitty c TeamViewer_Setup_es.exe TeamViewer_Setup_es.exe.kit
    0 -> 5 in 0.00 sec.
    I don't see the reason why kitty doesn't want to claw this one, neither 7z1500.exe...

    Plus: a stdin-stdout release would help a lot in testing. The idea is to use it with shar, for example.
    Last edited by Gonzalo; 26th April 2015 at 02:58.

  6. The Following User Says Thank You to Gonzalo For This Useful Post:

    snowcat (26th April 2015)

  7. #4
    Member snowcat's Avatar
    Join Date
    Apr 2015
    Location
    Vietnam
    Posts
    25
    Thanks
    33
    Thanked 11 Times in 8 Posts

    A little patch

    Oops, I set the wrong compile setting (-Os) :P
    It should be: -march=i686 -Ofast -m32 -fno-exceptions -fno-unwind-tables -fomit-frame-pointer

    And seem like MinGW is better than TDM-GCC :P

    Result on Corpus:
    Code:
    bib: 111261 -> 70454 (5.0659) in 0.01 sec.
    book1: 768771 -> 445732 (4.6384) in 0.06 sec.
    book2: 610856 -> 355339 (4.6537) in 0.05 sec.
    geo: 102400 -> 68534 (5.3542) in 0.01 sec.
    news: 377109 -> 232413 (4.9304) in 0.03 sec.
    obj1: 21504 -> 13323 (4.9565) in 0.00 sec.
    obj2: 246814 -> 143938 (4.6655) in 0.01 sec.
    paper1: 53161 -> 31703 (4.7709) in 0.00 sec.
    paper2: 82199 -> 47772 (4.6494) in 0.00 sec.
    pic: 513216 -> 71673 (1.1172) in 0.01 sec.
    progc: 39611 -> 23453 (4.7367) in 0.00 sec.
    progl: 71646 -> 38084 (4.2525) in 0.01 sec.
    progp: 49379 -> 26144 (4.2356) in 0.01 sec.
    trans: 93695 -> 53756 (4.5899) in 0.01 sec.

    @Gonzalo: add an error report, may you retest it?
    Attached Files Attached Files
    Last edited by snowcat; 26th April 2015 at 06:07.

  8. #5
    Member
    Join Date
    May 2012
    Location
    United States
    Posts
    317
    Thanks
    168
    Thanked 51 Times in 37 Posts
    Quote Originally Posted by snowcat View Post
    Oops, I set the wrong compile setting (-Os) :P
    It should be: -march=i686 -Ofast -m32 -fno-exceptions -fno-unwind-tables -fomit-frame-pointer

    And seem like MinGW is better than TDM-GCC :P

    Result on Corpus:
    Code:
    bib: 111261 -> 70454 (5.0659) in 0.01 sec.
    book1: 768771 -> 445732 (4.6384) in 0.06 sec.
    book2: 610856 -> 355339 (4.6537) in 0.05 sec.
    geo: 102400 -> 68534 (5.3542) in 0.01 sec.
    news: 377109 -> 232413 (4.9304) in 0.03 sec.
    obj1: 21504 -> 13323 (4.9565) in 0.00 sec.
    obj2: 246814 -> 143938 (4.6655) in 0.01 sec.
    paper1: 53161 -> 31703 (4.7709) in 0.00 sec.
    paper2: 82199 -> 47772 (4.6494) in 0.00 sec.
    pic: 513216 -> 71673 (1.1172) in 0.01 sec.
    progc: 39611 -> 23453 (4.7367) in 0.00 sec.
    progl: 71646 -> 38084 (4.2525) in 0.01 sec.
    progp: 49379 -> 26144 (4.2356) in 0.01 sec.
    trans: 93695 -> 53756 (4.5899) in 0.01 sec.

    @Gonzalo: add an error report, may you retest it?
    Ahh now it's speed is correct!

    Code:
    WIN95.SHAR       | 58,194,746 | 
    WIN95.KITTY      | 33,326,515 | 2.93 s
    WIN95.BIT6       | 34,214,509 | 5.80 s
    I would like to test JQCoding program as well but I don't find compiled Windows executable.
    Last edited by comp1; 26th April 2015 at 07:17.

  9. The Following User Says Thank You to comp1 For This Useful Post:

    snowcat (26th April 2015)

  10. #6
    Member
    Join Date
    Aug 2014
    Location
    Argentina
    Posts
    464
    Thanks
    202
    Thanked 81 Times in 61 Posts
    Quote Originally Posted by snowcat View Post
    Oops, I set the wrong compile setting (-Os) :P
    It should be: -march=i686 -Ofast -m32 -fno-exceptions -fno-unwind-tables -fomit-frame-pointer

    And seem like MinGW is better than TDM-GCC :P

    Result on Corpus:
    Code:
    bib: 111261 -> 70454 (5.0659) in 0.01 sec.
    book1: 768771 -> 445732 (4.6384) in 0.06 sec.
    book2: 610856 -> 355339 (4.6537) in 0.05 sec.
    geo: 102400 -> 68534 (5.3542) in 0.01 sec.
    news: 377109 -> 232413 (4.9304) in 0.03 sec.
    obj1: 21504 -> 13323 (4.9565) in 0.00 sec.
    obj2: 246814 -> 143938 (4.6655) in 0.01 sec.
    paper1: 53161 -> 31703 (4.7709) in 0.00 sec.
    paper2: 82199 -> 47772 (4.6494) in 0.00 sec.
    pic: 513216 -> 71673 (1.1172) in 0.01 sec.
    progc: 39611 -> 23453 (4.7367) in 0.00 sec.
    progl: 71646 -> 38084 (4.2525) in 0.01 sec.
    progp: 49379 -> 26144 (4.2356) in 0.01 sec.
    trans: 93695 -> 53756 (4.5899) in 0.01 sec.

    @Gonzalo: add an error report, may you retest it?
    Now it's better

    Anyway, the error still appearing:

    Code:
    D:\>kitty c 7z1500.exe 7z1500.exe2
    7z1500.exe: 0 -> 5 (1.#INF) in 0.00 sec.
    c: Invalid argument
    As today is related only to these two files... Weird

    PS: Remember stdin - stdout...
    It shouldn´t be difficult to add a speed counter, to make the program's output more useful. You have right now the input size and the time so it's a just a division.
    Also, I feel that most users/testers might prefer % instead of bpb... But it's just a mater of taste.
    Last edited by Gonzalo; 26th April 2015 at 07:27.

  11. The Following User Says Thank You to Gonzalo For This Useful Post:

    snowcat (26th April 2015)

  12. #7
    Member snowcat's Avatar
    Join Date
    Apr 2015
    Location
    Vietnam
    Posts
    25
    Thanks
    33
    Thanked 11 Times in 8 Posts

    New patch

    @Gonzalo:
    As your suggestion, I made the real-time speed counter
    Could you try to create a new folder, copy Kitty and 2 files to, and then try again? I think MS hate to allow to write at root of disk like D:
    Attached Files Attached Files

  13. #8
    Member
    Join Date
    Aug 2014
    Location
    Argentina
    Posts
    464
    Thanks
    202
    Thanked 81 Times in 61 Posts
    Quote Originally Posted by snowcat View Post
    @Gonzalo:
    As your suggestion, I made the real-time speed counter
    Could you try to create a new folder, copy Kitty and 2 files to, and then try again? I think MS hate to allow to write at root of disk like D:
    Oh damn! It wasn't your problem. It seems like the OS messed up the two files. Nobody can read them. So don't bother trying to fin a bug, for it isn't there. Congrats for the UI improvements!

  14. The Following User Says Thank You to Gonzalo For This Useful Post:

    snowcat (27th April 2015)

Similar Threads

  1. Experimental new ZCM file compressor!
    By Nania Francesco in forum Data Compression
    Replies: 264
    Last Post: 10th June 2018, 19:09
  2. PPM Compressor Small datas
    By nm_m in forum Data Compression
    Replies: 11
    Last Post: 5th July 2014, 13:53
  3. QuikCAT Miliki Super Compressor
    By osmanturan in forum Data Compression
    Replies: 2
    Last Post: 2nd November 2008, 19:29
  4. Fpaq0pv3 file Compressor
    By Nania Francesco in forum Forum Archive
    Replies: 13
    Last Post: 7th April 2008, 17:20
  5. CCM file compressor
    By LovePimple in forum Forum Archive
    Replies: 54
    Last Post: 22nd February 2007, 02:13

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •