I found the API ippsDecodeLZO_8u definition in Ippdc.h:
// Name: ippsDecodeLZO_8u
// Purpose: decompresses specified input buffer to output buffer, returns decompressed data length
// pSrc pointer to input buffer
// srcLen input data length
// pDst pointer to output buffer
// pDstLen pointer to output data length variable. Initially contains output buffer length
// ippStsNullPtrErr one of the pointers is NULL
// ippStsDstSizeLessExpected output buffer is too short for compressed data
// ippStsSrcSizeLessExpected input buffer data is not complete, i.e. no EOF found
// ippStsBrokenLzoStream ippsDecodeLZOSafe_8u detected output buffer boundary violation
// ippStsNoErr no error detected
If I passed the argument pDstlen (value = 0), the performance of ippsDecodeLZO_8u is very low. But If I passed the pDstlen (value = real output buffer length ), the performance is improved.
- I don't kown why the return code is always 'ippStsNoErr' when I passed the argument pDstlen (value = 0), is right?
- If IPP allows user call the API ippsDecodeLZO_8u by passing the argument pDstlen (value = 0), why the performance is lower than I passed the real output buffer length . I think IPP will malloc additional buffer to support the situation that given argument pDstlen < decompressed_len. So this action willmake performance decline. Is right?
Chuck De Sylva (Intel) wrote:Hi, sylva My applications linked with the single threaded libraries, and the IPP version is 7.1.0. Regards, Haixiao
Are you linking with the single threaded or multithreaded libraries? Which version are you using?