Click here to Skip to main content
6,596,602 members and growing! (20,265 online)
Email Password   helpLost your password?
General Programming » Algorithms & Recipes » General     Intermediate

Pure C# MiniLZO port

By Astaelan

Fast stream compression using a ported minilzo for .NET.
C# 2.0, Windows, .NET 2.0VS2005, Dev
Posted:3 Nov 2006
Updated:22 Dec 2006
Views:45,377
Bookmarked:42 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
20 votes for this article.
Popularity: 6.12 Rating: 4.70 out of 5

1
1 vote, 5.0%
2

3
2 votes, 10.0%
4
17 votes, 85.0%
5

Introduction

I was recently in a position where I needed to find a fast streamable compression solution.  The great source by Markus Oberhumer provided the answer. After using the C code for a while, I realized C#/.NET lacked a similar library, short of one I found which was commercial.

As a result, I decided to attempt a minimalistic port of MiniLZO compression and decompression into pure C#. At this point, the code uses unsafe/fixed blocks to best mimic the original minilzo implementation. A pure managed solution may be soon to follow (at the cost of speed).

The code has not been unit tested 100%, but all initial tests have been successful. If anyone finds any bugs, please report them so I may fix it. I also have not done any profiling of the speed yet, if anyone feels upto the task of comparing it against the C implementation.

Use of the code is relatively simple, here is a quick example.

Compression

byte[] original = File.ReadAllBytes("...");
byte[] destination;
MiniLZO.Compress(original, out destination);

Decompression

byte[] destination = ...; /* Resulting buffer from above */
byte[] original = new byte[x];
MiniLZO.Decompress(destination, original);

Note that with compression, the destination buffer will be assigned and trimmed to the correct size. With decompression, the "original" buffer must be preallocated with the correct original size. Also note that my implementation removed all use of goto from the original source, and replaces certain uses with OverflowExceptions.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Astaelan


Member
Short and simple, I'm a self contracted programmer, my strongest programming skills are in C/C++ and C#/.NET. I have a nack for porting C algorithms to C#.
Occupation: Web Developer
Location: Canada Canada

Other popular Algorithms & Recipes articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 25 of 35 (Total in Forum: 35) (Refresh)FirstPrevNext
QuestionUsage in closed source customer project PinmemberKay Herzam23:01 12 Jul '07  
AnswerRe: Usage in closed source customer project PinmemberAstaelan7:11 13 Jul '07  
Generalexample with memory stream, chunk-by-chunk Pinmemberdncpax22:19 11 Jul '07  
GeneralRe: example with memory stream, chunk-by-chunk PinmemberAstaelan7:07 13 Jul '07  
GeneralSource Code PinmemberTit Copernicus4:10 5 May '07  
GeneralRe: Source Code PinmemberAstaelan9:24 5 May '07  
GeneralHere is how to make it work on Pocket PC Windows Mobile Pinmemberrkm2:56 10 Jan '07  
GeneralDoesn't work on 64 bit Pinmemberbimal200618:38 4 Jan '07  
GeneralRe: Doesn't work on 64 bit PinmemberAstaelan19:15 4 Jan '07  
GeneralRe: Doesn't work on 64 bit Pinmembertedsmorris9:39 24 Oct '07  
GeneralRe: Doesn't work on 64 bit PinmemberAVEbrahimi22:21 17 Jun '09  
GeneralThanks PinmemberBehind The Scene13:46 22 Dec '06  
GeneralRe: Thanks PinmemberAstaelan4:47 23 Dec '06  
GeneralTiny bug PinmemberSimmoTech20:14 22 Nov '06  
GeneralRe: Tiny bug PinmemberAstaelan10:19 22 Dec '06  
GeneralSuggestion PinmemberOskar Austegard4:04 9 Nov '06  
GeneralRe: Suggestion PinmemberAstaelan23:54 13 Nov '06  
GeneralAnother such library... Pinmemberomaurice16:06 6 Nov '06  
GeneralRe: Another such library... PinmemberAstaelan18:04 6 Nov '06  
GeneralRe: Another such library... PinmemberBehind The Scene13:40 22 Dec '06  
GeneralRe: Another such library... Pinmemberomaurice13:43 22 Dec '06  
GeneralRe: Another such library... PinmemberBehind The Scene13:51 22 Dec '06  
GeneralRe: Another such library... Pinmemberomaurice14:00 22 Dec '06  
GeneralRe: Another such library... PinmemberAstaelan5:10 23 Dec '06  
GeneralRe: Another such library... Pinmemberomaurice5:32 23 Dec '06  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 22 Dec 2006
Editor: Smitha Vijayan
Copyright 2006 by Astaelan
Everything else Copyright © CodeProject, 1999-2009
Web22 | Advertise on the Code Project