2010-09-08 96 views
0

我试图通过套接字发送大量数据(基本上是将数据记录转换为字符串)并降低了其他程序的性能。是否可以使用gzip等压缩数据,并在另一端解压缩数据?压缩套接字发送数据

+0

您可以随时在应用程序层处理压缩/解压缩。 – vrdhn 2010-09-08 05:03:52

回答

1

是的,但压缩和解压缩也有其成本。

您可能想要考虑使用另一个进程或线程来处理数据传输;这可能比仅仅进行压缩更困难,但是当数据负载增加n倍时可以更好地扩展。

+0

问题是服务器非常快速地生成数据,并且套接字是一个主要瓶颈。如果我不减少在套接字传输上花费的时间,它会真的影响我的性能 – aks 2010-09-08 04:58:04

0

当然,你可以做到这一点。发送二进制数据时,您必须注意平台的端点。

但是,你确定你的性能问题将通过压缩发送的数据来解决吗?你仍然会有额外的步骤(压缩/解压缩,可能解决endiannes问题)。

想想如何通过套接字进行通信。你正在使用同步或异步通信。如果你做同步读写,那么你可以感觉到性能的惩罚...

1

是的,这是可能的。 zlib是进行这种压缩和解压缩的库。但是,通过以二进制格式序列化数据记录而不是字符串可以更好地服务于您;这应该会提高性能,甚至可能比使用压缩更好。

1

是的。实现这个最简单的方法是使用古老的zlib库。

compress()uncompress()实用功能可能是你在之后。