Compression Array of Bytes
My problem is: I want to store a 开发者_C百科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
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.
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.
Are you sure that you really need to compress random data? Best compression can be achieved if you know what is source of data and some other specifications that can be used to choose and optimize compression algorithms. First how big your arrays are? If this are values of characters there is difference in frequency of each letter. If this array is sorted or it has unique values this can be also used to optimize space. So what is the source of your data?
精彩评论