Help optimizing UnCompress for gzipped files

Steven Schveighoffer schveiguy at yahoo.com
Tue Jan 2 14:09:54 UTC 2018


On 1/2/18 8:57 AM, Adam D. Ruppe wrote:
> On Tuesday, 2 January 2018 at 11:22:06 UTC, Stefan Koch wrote:
>> You can make it much faster by using a sliced static array as buffer.
> 
> Only if you want data corruption! It keeps a copy of your pointer 
> internally: https://github.com/dlang/phobos/blob/master/std/zlib.d#L605
> 
> It also will always overallocate new buffers on each call 
> <https://github.com/dlang/phobos/blob/master/std/zlib.d#L602>
> 
> There is no efficient way to use it. The implementation is substandard 
> because the API limits the design.

iopipe handles this quite well. And deals with the buffers properly 
(yes, it is very tricky. You have to ref-count the zstream structure, 
because it keeps internal pointers to *itself* as well!). And no, iopipe 
doesn't use std.zlib, I use the etc.zlib functions (but I poached some 
ideas from std.zlib when writing it).

https://github.com/schveiguy/iopipe/blob/master/source/iopipe/zip.d

I even wrote a json parser for iopipe. But it's far from complete. And 
probably needs updating since I changed some of the iopipe API.

https://github.com/schveiguy/jsoniopipe

Depending on the use case, it might be enough, and should be very fast.

-Steve


More information about the Digitalmars-d-learn mailing list