tags:

views:

55

answers:

2

Hi,

My problem is: I want to store a array of bytes in compressed file, and then I want to read it with a good performance.

So I create a array of bytes then pass to a ZLIB algorithm then store it in the file. For my surprise the algorithm doesn't work well., probably because the array is a random sample. Using this approach, it will will be ber easy to read. Just copy the stream to memory, decompress them and copy it to a array of bytes.

But i need to compress the file. Do I have to use a algorithm, like RLE, for compresse the byte array? I think that I can store the byte array like a string and then compress it. But i think I am going to have a poor performance on reading data.

Sorry for my poor english.

Thanks

+1  A: 

It's not clear whether you mean "random sample" in the statistical sense (a sample of real data chosen at random), or just randomly generated data. The first should compress fine.

However, truly random data can not be compressed (well). In fact, compressibility is one of the measures of randomness.

Matthew Flaschen
I made a test. I create a file that store an array of bytes with random bytes. Then i tryed to compress it but didn´t work. The compression was very poor.It is like a binary file, that is why the compression is poor?
Database Designer
@Pedro, all compression algorithms work by exploiting non-randomness in the input. Thus, random data compresses poorly.
Matthew Flaschen
So I need an algorith that compress my array of bytes. It seems simple to me. I want to pass my array of bytes to an algorithm and then receive a new array or stream compacted.
Database Designer
A: 

If the data is random, it will have a high entropy. There is no algorithm that can compress such data with much success. That is, since it's random, you might get lucky on a specific case, but generally it's useless to try to compress it.

Thorarin