Snappy是谷歌开源的一个用来压缩和解压的开发包。相较其他压缩算法速率有明显的优势,官方文档显示在64位 i7处理器上,每秒可达200~500MB的压缩速度,不禁感叹大厂的算法就是厉害。

开源项目地址:https://github.com/google/snappy

开撸:

1.下载最新版本Snappy 1.1.7,下载地址如下:

https://github.com/google/snappy/releases

2.解压:

tar -zxvf tar -zxvf snappy-1.1.7.tar.gz

3.进入该目录

cd snappy-1.1.7

4.创建build目录

mkdir build

5.本机需要安装cmake工具,版本>=3.1。执行cmake

cd build & cmake ../

6.编译

make

build目录下回生成静态库libsnappy.a,所需头文件snappy-stubs-public.h和根目录下的snappy.h。

有了库文件和两个头文件,可以使用了。

新建snappy-test目录,把库文件libsnappy.a,snappy.h,snappy-stubs-public.h三个文件放到该目录下新建main.cpp文件。

#include <iostream>
#include "snappy.h"
#include <string.h>using namespace std;int main()
{string input = "i love china!";for(int i=0; i<5; i++){input += input;}cout << "压缩前:" << input.size() << endl;cout << input << endl;cout << "=================================" << endl;string output = "";snappy::Compress(input.data(), input.size(), &output);cout << "压缩后:" << output.size() << endl;cout << output << endl;cout << "=================================" << endl;string str = "";snappy::Uncompress(output.data(), output.size(), &str);cout << "解压后:" << str.size() << endl;cout << str << endl;return 1;
}

运行结果:

压缩前416字节,压缩后37字节。

不想编译库的可以直接下载:

snappy-windows地址:点击打开链接

没有下载积分的,可以关注下面公众号,回复"108"获取源码

snappy-linux地址:点击打开链接

没有下载积分的,可以关注下面公众号,回复"109"获取源码

基于Snappy实现数据压缩和解压相关推荐

  1. java 解压到内存,Java GZip 基于内存实现压缩和解压的方法

    欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!! GZip是常用的无损压缩算法实现,在Linux中较为常见,像我们在Linux安装软件时,基本都是.tar.gz格式..tar.gz格式文件需 ...

  2. ZLib的数据压缩和解压缩

    Delphi的开发者可以使用ZLib单元中定义的TCompressionStream进行数据压缩,使用TDecompressionStream解压缩ZLib压缩后的数据.它们的定义如下: TCusto ...

  3. Unity BZip2压缩和解压,基于C#

    基于BZip2的压缩方式(ICSharpCode.SharpZipLib)   压缩和解压代码举例: MemoryStream ms = new MemoryStream();         BZi ...

  4. pako java_基于pako.js实现gzip的压缩和解压功能示例

    本文实例讲述了基于pako.js实现gzip的压缩和解压功能.分享给大家供大家参考,具体如下: pako.js实现gzip的压缩和解压 var b64Data = 'H4sIAAAAAAAAAJ3UM ...

  5. 前端Vue2.6.10数据压缩(zlib/pako)和解压(zlib/pako),后端Python3.7数据压缩(zlib)和解压(zlib)

    (注:前后端压缩都加上了base64:文章所提及的压缩和解压仅仅针对数据,不是文件.) 一.前端Vue2.6.10两种压缩和解压的方式(zlib模块和pako模块) 1.zlib模块和pako模块(建 ...

  6. Php解压pako,基于pako.js实现gzip的压缩和解压功能示例

    本文实例讲述了基于pako.js实现gzip的压缩和解压功能.分享给大家供大家参考,具体如下: pako.js实现gzip的压缩和解压 var b64Data = 'H4sIAAAAAAAAAJ3UM ...

  7. Linux的zip压缩文件压缩和解压

    Linux的zip压缩文件压缩和解压 <Linux一线运维实战>清华大学出版社(即将出版) 通常,系统中的文件的可以被直接打开的,这就难免文件的内容被查看.另外,对于要归档保存的(压缩)文 ...

  8. JAVA 7z Seven Zip 压缩和解压文件

    JAVA 7z Seven Zip 压缩和解压文件 7-Zip是基于GNU LGPL协议发布的软件,通过全新算法使压缩比率大幅提升 本文主要讲解通过JAVA方式把文件压缩成7z文件和对7z文件进行解压 ...

  9. TSDB 时序数据库时序数据压缩解压技术浅析

    摘要:目前,物联网.工业互联网.车联网等智能互联技术在各个行业场景下快速普及应用,导致联网传感器.智能设备数量急剧增加,随之而来的海量时序监控数据存储.处理问题,也为时序数据库高效压缩.存储数据能力提 ...

最新文章

  1. 如何判断图中存环(正负)
  2. 判断浮点数溢出的方法
  3. 网易云信11月大事记
  4. ios开发之.pch文件的使用
  5. java界面化二叉排序树_105-线索化二叉树代码实现2
  6. html5 自动保存 提示,html5+ SQLite提示数据表不存在
  7. HBuilder制作WAP2APP之给APP增加或注入分享功能
  8. mysql 去重 性能比较_mysql 去重方法distinct 与 group by 性能比较 | 学步园
  9. Atitit 常见编程语言读写数据库的api目录1.1. Php pdo 11.2. Java jdbctmpltr 11.3. Nodejs mysql模块 11.4. Pytho
  10. 企业管理理论综述与实践 — 战略
  11. ES分布式架构的原理
  12. 希捷“固件门”,影响深远啊
  13. PS怎样把成图变成素描或者速写稿
  14. Db2插入数据溢出报错测试
  15. pci 中断冲突_PCI设备中断冲突的基本解决办法
  16. Python常见笔/面试题
  17. 关于File()中的pathname的路径
  18. 纳斯达克的上市标准和条件
  19. CSS Grid 和 Flexbox
  20. xml 转 excel  和xml 转excel 的 思路描述

热门文章

  1. 旅游APP设计与实现
  2. 【Flutter组件】层叠布局 Stack、Positioned
  3. 诺基亚开发出手机基站液体冷却技术
  4. 当你按下「随机播放」时,QQ音乐和网易云们都做了什么?
  5. php两个时间戳相隔多少天
  6. Vue中实现pdf文件预览功能
  7. 卷毛机器人抢大龙_世界第一机器人卷毛杀人书25层,屠杀峡谷之巅钻一局:重演抢大龙...
  8. linux中initrd的含义,浅谈linux启动的那些事(initrd.img)
  9. 美SEC主席最新表态:PoS代币可能是证券
  10. spire.doc操作word文档