zoukankan      html  css  js  c++  java
  • 添砖加瓦:snappy无损压缩算法

      一、简介

      Snappy(旧称:Zippy)是Google基于LZ77的思路用C++语言编写的快速数据压缩与解压程序库,并在2011年开源。其目标并非最大压缩率或与其他压缩程序的兼容性,而是非常高的速度和合理的压缩率。使用一个运行在64位模式下的酷睿i7处理器的单个核心,压缩速度250 MB/s,解压速度500 MB/s。压缩率比gzip低20-100%

      Snappy广泛应用在Google的项目,例如BigTable、MapReduce和Google内部RPC系统的压缩数据。它可在开源项目中使用,例如Cassandra、Hadoop、LevelDB、MongoDB、RocksDB和Lucene。[4]解压缩时会检测压缩流中是否存在错误。Snappy不使用内联汇编并且可移植。

      来源:维基百科

      二、安装

      1、下载:https://github.com/google/snappy.git

      2、安装CMake

      3、cd snappy && mkdir build && cd build && cmake ../ && make && make install

      三、测试

    #include <iostream>
    #include <string>
    #include <snappy.h>
    using namespace std;
    
    int main(int argc,char* argv[])
    {
        string input = "hello world";
        string output;
    
        for(int i = 0; i < 5; i++)
            input += input;
    
        snappy::Compress(input.data(),input.size(),&output);
        cout << "input size: " << input.size() << " output size: " << output.size() << endl;
    
        string output_uncom;
        snappy::Uncompress(output.data(),output.size(),&output_uncom);
        if(input == output_uncom)
            cout << "same" << endl;
        else
            cout << "not same" << endl;
    
        return 0;
    }
    View Code

      编译:g++ test.cpp -o test -lsnappy

     

  • 相关阅读:
    字符数组(判断字符串大小)
    http请求文件流
    webservice接口调用
    面试基础-线程(一)
    面试基础-redis(二)
    面试基础-redis(一)
    面试基础--JVM
    【转】支付系统
    springcloud搭建高可用注册中心的时候注册中心在unavailable-replicas中的问题
    springboot+javafx所有依赖一起打包
  • 原文地址:https://www.cnblogs.com/lianshuiwuyi/p/7900388.html
Copyright © 2011-2022 走看看