套接字中压缩数据的优点
Advantages of compressed data in socket
我使用zlib来压缩我的文件,压缩后我没有看到它的大小有显着变化,我试图用套接字提高传输速度,所以我试图在通过套接字发送之前压缩文件。
我使用下面的代码来压缩文件:
int compress_file(char *infilename, char *outfilename) {
FILE *infile = fopen(infilename, "rb");
gzFile outfile = gzopen(outfilename, "wb");
if (!infile || !outfile) return -1;
char inbuffer[128];
int num_read = 0;
unsigned long total_read = 0, total_wrote = 0;
while ((num_read = fread(inbuffer, 1, sizeof(inbuffer), infile)) > 0) {
total_read += num_read;
gzwrite(outfile, inbuffer, num_read);
}
fclose(infile);
gzclose(outfile);
}
在套接字上发送之前压缩文件有什么好处?
在套接字上发送之前压缩文件有什么好处?
显然,节省了网络带宽。然而,这将是一种权衡。下面我们就来谈谈和的优点
在网络压缩中很难选择一个最佳点,特别是当要压缩的内容是未知的。
你需要在"压缩速度"、"压缩率"answers"解压速度"之间取得平衡:
-
如果第一个是低的,你有未使用的网络容量,而你正在压缩有效载荷
-
如果压缩比低,那么你可能以网络"饱和"结束,如果有成堆的客户端通信和/或你的可用带宽很窄
-
如果解压缩的速度很低,你可能会淹没服务器CPU在做大部分的解压缩而不是处理负载。
对于最常见的场景,当压缩是合理的,平衡被转移到客户端较重的一方-假设客户端将有多余的处理能力,因此选择更好的压缩算法将节省带宽和服务器CPU。
然而,当发送者处于"实时压力"下时,情况就会发生变化(想想现场直播音乐会,或者在日内瓦的大型强子对撞机中收集希格斯玻色子碰撞的数据):如果使用压缩(大多数时候不会,除了标准/编解码器中内置的压缩算法),压缩比将会很低,计算成本也很低。
相关文章:
- 我觉得我放入结构中的输入代码可以压缩,关于如何在保持代码简短的同时保持数据个性化的任何建议?
- 在编译时解压缩数组扩展数据块 (C++11/14)
- 解压缩 TIFF 数据会打印随机字符
- 解压缩压缩的 TIFF 数据
- 键:: MAP或类似数据结构中的键压缩
- 在压缩和未压缩数据之间切换
- 使用 boost zlib 从 std::vector 中的文件中读取压缩的 zraw 数据
- 运行长度编码算法[数据压缩].
- DXT3(BC2)压缩格式alpha数据
- C/C++:在不使用临时文件的情况下压缩(gz)数据
- 用于大型数据流的通货紧缩压缩算法
- 随时随地压缩/解压缩数据
- 在发送数据之前压缩数据 - 控制字符
- 使用 curl 解压缩 gzip 数据
- 如何将二进制数据写入压缩文件
- 实现部分写入压缩数据的存储写入程序
- 数据压缩方法
- 具有非常快速的内>数据查找和快速反向查找(搜索/插入/删除数据)的压缩字典?
- 标准化的库,将数据压缩为一个小片段序列C++/C
- 数据压缩器需要什么样的数学