LZD compression software - Fast Decoding speed

View previous topic View next topic Go down

LZD compression software - Fast Decoding speed

Post  Yann on Sat 30 Aug - 2:23

LZD is also hosted on HPCalc.org .

LZD is an LZ77-class compressor developed to reach fast decoding speed, multiple times faster than standard compressors (see benchmark results below).

LZD prime advantage is its decoding speed. However, it also compresses fast, and features strong compression ratio on small (<1KB) and complex objects (ASM games for example).
With automated compression tools, that try to compress all objects they meet, LZD is a very good choice, given that many objects in an HP Calculator are likely to be small.

Long-term objective of LZD is to become default compressor companion of MkLibZ
(currently, this place is taken by BZ2) in order to produce very responsive compressed libraries.
LZD is developed with Debug4x, using MASD syntax.

Current Version : LZD v0.4c : HP48 & HP49/50 Binaries

Changelog :
v0.4c :

- Improved FastLZD : Better and faster compression, less memory usage, smaller size
- Improved decoding speed
- ULZ smaller

Benchmark Results :
HP50G
HP50G Summary

BZ49RFLZD 0.4cTNT 1.11FastLZD 0.4c
Memory Req.

11KB
?
5KB
7-27KB
4KB
Decoding Speed

25.8 KB/s
17.6 KB/s
77.5 KB/s
15.8 KB/s
83.8 KB/s
Compression Speed

1.41 KB/s0.46 KB/s2.54 KB/s1.19 KB/s9.16 KB/s
Compression Gain

-33.1%
-31.3%
-34.1%
-35.6%
-29.4%
See Detailed Results

HP48G
HP48G Summary

BZ 1.2FlashLZD 0.4cTNT 1.0FastLZD v0.4c
Memory Req.

11KB
?
5KB
7-27KB
4KB
Decoding Speed

10.0 KB/s
10.7 KB/s
26.9 KB/s
5.3 KB/s
27.4 KB/s
Compression Speed

0.55 KB/s0.46 KB/s1.11 KB/s0.45 KB/s3.19 KB/s
Compression Gain

-30.3%
-30.4%
-31.8%
-33.5%
-27.6%
See Detailed Results


Embedded Versions

Starting with v0.4, embedded versions of LZD are provided to developpers.

Objective is to allow your application to use compression "on the fly".
Key characteristics are :
- Very Small (~500 Bytes)
- Little Memory Requirement (4-5KB)
- Does not display statistics
- Does not change error messages (no CKn)
- Does not include a decoder; use ULZ for decoding

A stand-alone decoder, called ULZ, is also provided.


Last edited by Admin on Sat 4 Sep - 14:54; edited 127 times in total

Yann
Admin

Number of posts : 174
Registration date : 2008-05-01

http://phantasie.tonempire.net

Back to top Go down

Previous releases

Post  Yann on Mon 15 Sep - 23:25

Previous releases :

LZD v0.4b : HP48 & HP49/50 Binaries
v0.4b :
- LZD & FastLZD both provided in normal ("user") and embedded versions
- Correction : a very rare bug in LZD (thanks Bruno)
- Change : embedded versions do no longer use CK1, to let programmer control error messages
- Smaller binary size
- Source code provided & commented for reader
LZD v0.4a : HP48 & HP49/50 Binaries
v0.4a :
- Minor compression speed improvement
- Smaller binary size
- Embedded version renamed "FastLZD"
- Embedded version animation only for large files
- Source code of ULZ provided & commented for reader
LZD v0.4 : HP48 & HP49/50 Binaries
v0.4 :
- Improved compression speed (~20%)
- Provides embedded version "Very Fast"
- Corrected decoder EOF condition, which created an alarm on valid archive
in rare circumstances (ARTW2/Nnew single file occurence)
LZD v0.3h : HP48 & HP49/50 Binaries
v0.3h :
- Improved compression speed (~15%)
- Improved decoding speed (~5%)
(*Not available*)
v0.3g :

- Improved decoding speed (~5%)
- Improved compression rate
- Encoding speed decreases (~10%). Use v0.3f for faster compression.
LZD v0.3f : HP48 & HP49/50 Binaries
v0.3f :
- Improved decoding speed (~10%)
- Correction : Decoder can detect broken (corrupted) archives
- Decoder can detect invalid memory writings and stop execution automatically
LZD v0.3e : HP48 & HP49/50 Binaries
v0.3e :
- Improved compression speed (~5%)
- Improved compression ratio (better deferred matches algorithm)
- Correction : stand-alone decompressor correctly display "Not enough Memory" error message
LZD v0.3d : HP48 & HP49/50 Binaries
v0.3d :
- Improved compression speed (~15%) by increasing memory requirement (~5KB)
LZD v0.3c : HP48 & HP49/50 Binaries
v0.3c :
- Improved compression speed (~20%)
- Minor decoding speed improvement
- Annunciators animation during compression (cosmetic)
LZD v0.3b : HP48 & HP49/50 Binaries (Alternate Download)
Changelog :
v0.3b :

- Improved compression speed (~15%)
LZD v0.3a : HP48 & HP49/50 Binaries (Alternate Download)
v0.3a :
- Bugfix : Stats GUI correctly displayed on HP50G
- Explicit Garbage collector management by the stand-alone decompressor; Should also work from covered ports
LZD v0.3 : HP48 & HP49/50 Binaries
v0.3 :
- Vastly improved compression speed, using <2KB memory for a match-table accelerator
- GUI enhancements, providing stats to user (compression results & time)

Previous versions of LZD were named ScanZ. They were designed as "Distribution
compressor", with little regards to compression speed. As a consequence, they were very slow, only usable on PC emulators.
ScanZ v0.2c : HP48 & HP49/50 Binaries
V0.2c :
- Minor compression improvement (deeper deferred matching)
ScanZ v0.2b : HP48 & HP49/50 Binaries
V0.2b :
- Improved compression ratio (deferred matching implementation)
ScanZ v0.2a : HP48 & HP49/50 Binaries
v0.2a :
- Minor improvements in all areas (speed, compression & size)
ScanZ v0.2 : HP48 & HP49/50 Binaries
v0.2 :

- Improved compression rate & decompression speed

ScanZ v0.1b : HP48 & HP49/50 Binaries
v0.1b :
- Improved compression rate & speed
- Released HP49/50 version
ScanZ v0.1a - HP48 Binaries
v0.1a :
- Garbage collection issues are corrected
- USZ Stand-alone decompressor provided, with improved speed
ScanZ v0.1 - HP48 binarie
v0.1 :
- Initial release, for testing only


Last edited by Admin on Wed 7 Oct - 23:37; edited 6 times in total

Yann
Admin

Number of posts : 174
Registration date : 2008-05-01

http://phantasie.tonempire.net

Back to top Go down

HP50G Benchmark

Post  Yann on Sun 28 Dec - 3:11

Benchmark Results : HP50G

HP50G Summary

BZ49RFLZD 0.4bTNT 1.11FastLZD v0.4b







Decoding Speed

25.8 KB/s
17.6 KB/s
77.5 KB/s
15.8 KB/s
74.3 KB/S
Compression Speed

1.41 KB/s0.46 KB/s2.52 KB/s1.19 KB/s8.67 KB/s
Compression Gain

-33.1%
-31.3%
-34.1%
-35.6%
-28.9%
Timings are measured using an emulated HP50G, with Emu48 v1.45
Results on real hardware are likely to be better, but should not change the ranking, as all programs benefit the same.

Detailed Results
ProgramRaw DataBZ49RFLZD 0.4TNT 1.11FastLZD v0.4b








BZ49Size
1249.5
1152
1147
1100
1109
1130.5
ASMDecode
ms43.5ms
82.5ms
15.5ms
81.5ms
15.5ms

compress
s0.60s
4.50s
0.30s
0.79s
0.19s








USAG49Size1858
1655.5
1648
1606.5
1581
1659
ASMDecodems66.5ms103ms
22ms
123ms
22.5ms

compresss0.86s
6.30s
0.42s
1.05s
0.28s








City Pic.Size1098322.5326
318321386.5
GrobDecodems42.5ms75.5ms
11ms
51.5ms
11ms

compresss1.80s
1.30s
2.49s
1.59s
0.08s








CombatSize2599
1458
1806
1650.5
1368.5
1764.5
SysRPLDecodems124ms
170ms
46ms
167ms
47.5ms

compresss1.25s
5.90s
0.64s
1.66s
0.29s








Market Pic.Size1914
18211747
1702.517621790
GreyscaleDecodems66.5ms
111ms
26ms
142ms
26.5ms

compresss1.27s
6.60s
0.62s
1.33s
0.31s








Font 1Size2048
1326.5
1331
1276
1258.5
1490
CellGrobDecodems122ms145ms
32.5ms
179ms
39ms

compresss1.25s
3.70s
1.20s
1.93s
0.26s








BeaubourgSize15056
7965
8510
81907760
8937.5
GameDecodems494ms
644ms
178ms
834ms
188ms

compresss19.3s
30s
10.1s
18.2s
1.52s








CycloSize28622
16005
16460
15723
15512
17374.5
GameDecodems1068ms1248ms
370ms
1780ms399ms

compresss64.6s
59s
34.8s
50.3s
3.02s

.


Last edited by Admin on Sat 21 Mar - 21:39; edited 7 times in total

Yann
Admin

Number of posts : 174
Registration date : 2008-05-01

http://phantasie.tonempire.net

Back to top Go down

HP48G Benchmark

Post  Yann on Sun 28 Dec - 3:16

HP48G

HP48G Summary

BZ 1.2FlashLZD 0.4bTNT 1.0FastLZD v0.4b







Decoding Speed

10.0 KB/s
10.7 KB/s
26.5 KB/s
5.3 KB/s
25.4 KB/s
Compression Speed

0.55 KB/s0.46 KB/s1.11 KB/s0.45 KB/s2.95 KB/s
Compression Gain

-30.3%
-30.4%
-31.8%
-33.5%
-26.8%
Timings are measured using an emulated HP48GX by Emu v1.45

Detailed Results :
CompressorNameRaw DataBZ 1.2FlashLZD 0.4bTNT 1.0FastLZD 0.4b
DecoderSize
312.5163209367209
Element Name






City Pic.Size
1098322.5365.5318321386.5
B&W Grob
Decode
ms
104ms88ms34ms154ms34ms

Compress
s
5.49s
4.51s
7.45s
4.54s
0.22s








BattleSize25991449150416531367.51752
SysRPLDecodems304ms226ms94ms494ms99ms

Compresss3.81s
4.10s
1.90s
4.49s
0.84s








Text Ress. 1Size1659.51262.512071276.5
11801402
StringListDecodems238ms192ms84ms432ms92ms

Compresss2.37s
3.83s
1.24s
2.98s
0.65s








Market Pic.Size191418211756.51702.517621790
GreyScaleDecodems
172ms199ms79ms426ms80ms

Compresss
3.90s
5.89s
1.83s
3.75s
0.89s








BMenuSize285220.5214207.5204217.5
UserRPLDecodems33ms26ms11ms59ms12ms

Compresss0.67s
0.42s
0.20s
1.00s
0.11s








Font 1Size20581326.5125612761258.51490
CellGrobDecodems340ms226ms98ms539ms116ms

Compresss3.85s
7.54s
3.55s
5.54s
0.74s








FastCircle v2.6Size368.5351*Failed*337337.5339
ASMDecodems22ms
12ms53ms12ms

Compresss0.70s

0.24s
1.02s
0.17s








Arc ToolboxSize16511060.510731011.51029.51065.5
Large ASM
Decodems148ms131ms53ms272ms54ms

Compresss2.01s
2.70s
1.15s
2.48s
0.51s
The last test is done with MkLibZ, to produce compressed libraries.
Phantasy Conquest is a pretty complex example, fairly large, with more than a hundred
files of many different type and sizes to compress; many are small, but there are also some "large size" ressources (greyscale grobs, texts, etc.).
MklibZ v0.4c w/
BZ v1.2
FLASH
LZD 0.3e
TNT v1.0
Phantasie Conquest v1.21 Eng
47 371.5
*Failed*
46 296
45 863.5
TGVz v2.17287.5
*Failed*7090
7052
Note : Flash unfortunately outputs an error (disrupting script) when it cannot compress better than original size. This forbid the use into an automated tool.

Yann
Admin

Number of posts : 174
Registration date : 2008-05-01

http://phantasie.tonempire.net

Back to top Go down

Re: LZD compression software - Fast Decoding speed

Post  Sponsored content Today at 5:58


Sponsored content


Back to top Go down

View previous topic View next topic Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum