[转载]关于EncdDecd/Soap.EncdDecd单元的EncodeStre
EncdDecd/Soap.EncdDecd单元提供了BASE64编、解码的两个函数:
在使用这两个函数的时候,要注意使用方法,以提高程序效率。
两个函数都有两个TStream类型参数。而TStream是抽象类,
其派生类主要有TMomoryStream,TStringStream,TFileStream等,都可以作为参数传递进去,对於Input参数,无论TMemoryStream,TStringStream,TFileStream都不会影响性能。但是对於Output参数,由於压缩的结果是写往OutputStream,因此压缩过程中不断地执行TStream的Write方法,如果是TMemoryStream,那效率就会极低,因为TMemoryStream里不断调用Write方法的结果是,不断地向Windows要求分配内存!从而导致性能下降!而TStringStream和TFileStream则没有这个问题.
因此,建议,Output参数最好不用TMemoryStream.
如果输出确实需要TMemoryStream类型,那么通过提前分配输出TMemoryStream的内存空间!
因为效率下降的原因是不断的申请内存空间。对于输出内存空间的计算公式为: