LZD compression software - Fast Decoding speed
Page 1 of 1
LZD compression software - Fast Decoding speed
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
See Detailed Results
HP48G
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.
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 | BZ49 | RF | LZD 0.4c | TNT 1.11 | FastLZD 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/s | 0.46 KB/s | 2.54 KB/s | 1.19 KB/s | 9.16 KB/s | |
Compression Gain | -33.1% | -31.3% | -34.1% | -35.6% | -29.4% |
HP48G
HP48G Summary | BZ 1.2 | Flash | LZD 0.4c | TNT 1.0 | FastLZD 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/s | 0.46 KB/s | 1.11 KB/s | 0.45 KB/s | 3.19 KB/s | |
Compression Gain | -30.3% | -30.4% | -31.8% | -33.5% | -27.6% |
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
Previous releases
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
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
HP50G Benchmark
Benchmark Results : HP50G
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
.
HP50G Summary | BZ49 | RF | LZD 0.4b | TNT 1.11 | FastLZD 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/s | 0.46 KB/s | 2.52 KB/s | 1.19 KB/s | 8.67 KB/s | |
Compression Gain | -33.1% | -31.3% | -34.1% | -35.6% | -28.9% |
Results on real hardware are likely to be better, but should not change the ranking, as all programs benefit the same.
Detailed Results
Program | Raw Data | BZ49 | RF | LZD 0.4 | TNT 1.11 | FastLZD v0.4b | |
BZ49 | Size | 1249.5 | 1152 | 1147 | 1100 | 1109 | 1130.5 |
ASM | Decode | ms | 43.5ms | 82.5ms | 15.5ms | 81.5ms | 15.5ms |
compress | s | 0.60s | 4.50s | 0.30s | 0.79s | 0.19s | |
USAG49 | Size | 1858 | 1655.5 | 1648 | 1606.5 | 1581 | 1659 |
ASM | Decode | ms | 66.5ms | 103ms | 22ms | 123ms | 22.5ms |
compress | s | 0.86s | 6.30s | 0.42s | 1.05s | 0.28s | |
City Pic. | Size | 1098 | 322.5 | 326 | 318 | 321 | 386.5 |
Grob | Decode | ms | 42.5ms | 75.5ms | 11ms | 51.5ms | 11ms |
compress | s | 1.80s | 1.30s | 2.49s | 1.59s | 0.08s | |
Combat | Size | 2599 | 1458 | 1806 | 1650.5 | 1368.5 | 1764.5 |
SysRPL | Decode | ms | 124ms | 170ms | 46ms | 167ms | 47.5ms |
compress | s | 1.25s | 5.90s | 0.64s | 1.66s | 0.29s | |
Market Pic. | Size | 1914 | 1821 | 1747 | 1702.5 | 1762 | 1790 |
Greyscale | Decode | ms | 66.5ms | 111ms | 26ms | 142ms | 26.5ms |
compress | s | 1.27s | 6.60s | 0.62s | 1.33s | 0.31s | |
Font 1 | Size | 2048 | 1326.5 | 1331 | 1276 | 1258.5 | 1490 |
CellGrob | Decode | ms | 122ms | 145ms | 32.5ms | 179ms | 39ms |
compress | s | 1.25s | 3.70s | 1.20s | 1.93s | 0.26s | |
Beaubourg | Size | 15056 | 7965 | 8510 | 8190 | 7760 | 8937.5 |
Game | Decode | ms | 494ms | 644ms | 178ms | 834ms | 188ms |
compress | s | 19.3s | 30s | 10.1s | 18.2s | 1.52s | |
Cyclo | Size | 28622 | 16005 | 16460 | 15723 | 15512 | 17374.5 |
Game | Decode | ms | 1068ms | 1248ms | 370ms | 1780ms | 399ms |
compress | s | 64.6s | 59s | 34.8s | 50.3s | 3.02s |
.
Last edited by Admin on Sat 21 Mar - 21:39; edited 7 times in total
HP48G Benchmark
HP48G
Timings are measured using an emulated HP48GX by Emu v1.45
Detailed Results :
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.).
Note : Flash unfortunately outputs an error (disrupting script) when it cannot compress better than original size. This forbid the use into an automated tool.
HP48G Summary | BZ 1.2 | Flash | LZD 0.4b | TNT 1.0 | FastLZD 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/s | 0.46 KB/s | 1.11 KB/s | 0.45 KB/s | 2.95 KB/s | |
Compression Gain | -30.3% | -30.4% | -31.8% | -33.5% | -26.8% |
Detailed Results :
Compressor | Name | Raw Data | BZ 1.2 | Flash | LZD 0.4b | TNT 1.0 | FastLZD 0.4b |
Decoder | Size | 312.5 | 163 | 209 | 367 | 209 | |
Element Name | |||||||
City Pic. | Size | 1098 | 322.5 | 365.5 | 318 | 321 | 386.5 |
B&W Grob | Decode | ms | 104ms | 88ms | 34ms | 154ms | 34ms |
Compress | s | 5.49s | 4.51s | 7.45s | 4.54s | 0.22s | |
Battle | Size | 2599 | 1449 | 1504 | 1653 | 1367.5 | 1752 |
SysRPL | Decode | ms | 304ms | 226ms | 94ms | 494ms | 99ms |
Compress | s | 3.81s | 4.10s | 1.90s | 4.49s | 0.84s | |
Text Ress. 1 | Size | 1659.5 | 1262.5 | 1207 | 1276.5 | 1180 | 1402 |
StringList | Decode | ms | 238ms | 192ms | 84ms | 432ms | 92ms |
Compress | s | 2.37s | 3.83s | 1.24s | 2.98s | 0.65s | |
Market Pic. | Size | 1914 | 1821 | 1756.5 | 1702.5 | 1762 | 1790 |
GreyScale | Decode | ms | 172ms | 199ms | 79ms | 426ms | 80ms |
Compress | s | 3.90s | 5.89s | 1.83s | 3.75s | 0.89s | |
BMenu | Size | 285 | 220.5 | 214 | 207.5 | 204 | 217.5 |
UserRPL | Decode | ms | 33ms | 26ms | 11ms | 59ms | 12ms |
Compress | s | 0.67s | 0.42s | 0.20s | 1.00s | 0.11s | |
Font 1 | Size | 2058 | 1326.5 | 1256 | 1276 | 1258.5 | 1490 |
CellGrob | Decode | ms | 340ms | 226ms | 98ms | 539ms | 116ms |
Compress | s | 3.85s | 7.54s | 3.55s | 5.54s | 0.74s | |
FastCircle v2.6 | Size | 368.5 | 351 | *Failed* | 337 | 337.5 | 339 |
ASM | Decode | ms | 22ms | 12ms | 53ms | 12ms | |
Compress | s | 0.70s | 0.24s | 1.02s | 0.17s | ||
Arc Toolbox | Size | 1651 | 1060.5 | 1073 | 1011.5 | 1029.5 | 1065.5 |
Large ASM | Decode | ms | 148ms | 131ms | 53ms | 272ms | 54ms |
Compress | s | 2.01s | 2.70s | 1.15s | 2.48s | 0.51s |
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.1 | 7287.5 | *Failed* | 7090 | 7052 |
Similar topics
» R.O.C compression software - Fast compression speed
» TNT2 compression software - High compression ratio
» BZ2 compression software
» BZ2 compression software - Standard format
» Stacker4x compression driver
» TNT2 compression software - High compression ratio
» BZ2 compression software
» BZ2 compression software - Standard format
» Stacker4x compression driver
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum
|
|