首页 > 其他分享 >「Go开源包」snappy:google开源的快速、无损压缩包

「Go开源包」snappy:google开源的快速、无损压缩包

时间:2024-03-26 20:46:21浏览次数:17  
标签:google 压缩 len 无损压缩 snappy 开源 src1

大家好,我是渔夫子。

今天给大家推荐的是一个google开源的快速、无损的压缩包:snappy。

snappy算法是google开源的。该包是google使用go语言来实现的。项目地址如下:

项目地址:https://github.com/golang/snappy

星标:1.4k

使用者:97.7k

简介

该包的目标并不是最大化的压缩比例,也不是和其他压缩库兼容;相反,snappy算法的目标是在合理的压缩率下尽可能的提高压缩速度

例如,与zlib的最快压缩模式相比,snappy依然比其快了一个数量级,但产生的压缩文件要比zip的大20%到100%。

特性

snappy压缩算法具有以下特性:

  • 快速:压缩速度大概在250MB/秒及更快的速度进行压缩。
  • 稳定:在过去的几年中,Snappy在Google的生产环境中压缩并解压缩了数P字节(petabytes)的数据。Snappy位流格式是稳定的,不会在版本之间发生变化
  • 健壮性:Snappy解压缩器设计为不会因遇到损坏或恶意输入而崩溃

性能

Snappy的目标是快速。在64位模式下,一个Corei7处理器的单核上,其压缩速度约为250MB/秒或更快,解压缩速度约为500MB/秒或更快。(这些数字是在我们的基准测试套件中最慢的输入情况下得出的;其他输入会快得多。)在我们的测试中,Snappy通常比同一级别的算法(如LZO、LZF、QuickLZ等)更快,同时实现了类似的压缩率。

示例

我们看下snappy的使用。如下:

package main

import (
    "fmt"
    "github.com/golang/snappy"
)

func main() {
    fmt.Println([]byte("aaa"))
    src1 := []byte("akakakakakakakakakakdddddddddcccccceeeeeeeegggggggggsssss")

    var dst1 []byte
    c := snappy.Encode(dst1, src1)
    fmt.Printf("src1 before compression len:%d\n", len(src1)) 
    fmt.Printf("src1 after compression len:%d\n", len(c))
}

运行代码,可知压缩前字符串是57个字节,压缩后是34个字节。结果如下:

src1 before compression len:57
src1 after compression len:34

但是,有时候你会发现,压缩后会比压缩前字节数变大。这是和原字符串有关系,如果原字符串中重复的字符越少,那么压缩后的长度就有可能会比之前变长。如果原字符串中重复的字符比较多,那么压缩比率就会很高。这也是压缩的基本原理。

标签:google,压缩,len,无损压缩,snappy,开源,src1
From: https://www.cnblogs.com/ExMan/p/18097519

相关文章

  • 低代码开发平台开源:提升效率,轻而易举!
    当前,数字化转型与社会高速发展都是人们肉眼可见的发展趋势。作为中小企业,如何在激烈的市场竞争中脱颖而出?如何赢得话语权和主动权,从而提升市场竞争力?这就需要考虑引进更为先进和专业的办公利器了。低代码开发平台开源能够为企业提升运维效率,激发创新思维,完成各部门友好协作,创造高......
  • cloudquery 开源ETL 框架
    cloudquery开源ETL框架提供了基于plugin的数据集成模式包含的特性开源,提供了sdk快速,基于golang轻量级协程,基于apachearrow部署方便,就是一个独一的二进制文件可扩展,cloudqueryplugin是无状态的,可以方便的扩展说明cloudquery可以应用的场景还是比较多的,但是目前一......
  • 华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代
    本文分享自华为云社区《华为云亮相KubeConEU2024,以持续开源创新开启智能时代》,作者:华为云头条。近日,在巴黎举办的云原生顶级峰会KubeConEU2024上,华为云首席架构师顾炯炯在“CloudNativexAI:以持续开源创新开启智能时代”的主题演讲中指出,云原生和AI技术的融合,是推动产业......
  • 创新无限,引领未来——RK3588开源笔记本震撼登场!
    创新无限,引领未来——RK3588开源笔记本震撼登场!尊敬的科技达人们,你是否已经厌倦了传统的笔记本电脑?是否渴望拥有一款能够完全按照自己意愿定制的开源笔记本?现在,我们自豪地宣布,基于强大的RK3588芯片,一款创新的开源笔记本正式亮相!强大性能RK3588是瑞芯微电子推出的一款高......
  • [开源初探]screenshot-to-code:将截图转化为代码
    介绍说明将截图转化为 HTML 代码的工具。该项目可以将屏幕截图转化为 HTML/JS/TailwindCSS 代码,它使用 GPT-4Vision 生成代码、DALL-E3 生成相似的图片。 安装运行为了方便演示及保持原有系统的简洁,将使用 docker 的方式来安装运行 screenshot-to-code。由于项......
  • google搜索如何修改搜索结果地区
    本文写于2024年03月25日,阅读时请注意时效。解决使用谷歌搜索引擎的时候经常会因为IP地址位置导致搜索结果的语言出现偏差,尤其是使用汉语进行搜索时常常会导致搜索结果中出现很多日语等语言结果造成干扰的问题。设置位置在:首页→右下角Settings→Searchsettings→左上角......
  • 一天涨 23k Star 的开源项目「GitHub 热点速览」
     ​在GitHub上做过开源项目的小伙伴,可能都经历过截图自己项目100Star、1000Star的时刻,但有些时候事情发生的太快来不及截图,因为可能一觉醒来就破万了。这件事看似有些天方夜谭,但放在马斯克的身上就不足为奇了。就在昨天,马斯克在GitHub上开源了Grok-1大模型,一天时间......
  • 【全开源】JAVA匿名情侣假装情侣系统源码支持微信小程序+微信公众号+H5_博纳软云
    匿名情侣假装情侣系统源码:让爱情悄然绽放在繁忙的都市生活中,你是否渴望一份不期而遇的爱情?我们推出的“匿名情侣假装情侣系统源码”,为你打开了一扇通往浪漫世界的大门。该系统源码设计精巧,操作简单,旨在为用户提供一个安全、私密的交友平台。在这里,你可以与心仪的TA开启一段假......
  • 开源表单工作流引擎好用吗?
    如果想提升办公协作效率,可以用什么样的平台软件实现?在竞争越来越激烈的社会中,想要实现高效率的办公,可以一起了解低代码技术平台以及开源表单工作流引擎。它们的易操作、灵活、简便等优势特点已成为了中小企业喜爱的优势特点。进入流程化办公新时代,不妨一起了解开源表单工作流引擎......
  • 【ARM版银河麒麟源码编译安装开源混合整数规划器SCIP和PySCIPOpt】
    ARM版银河麒麟修炼之路第一章ARM版银河麒麟源码编译安装开源混合整数规划器SCIP和PySCIPOpt文章目录ARM版银河麒麟修炼之路前言一、本机软硬件配置二、编译环境搭建1.添加Ubuntu20.04apt源2.apt安装依赖库3.源码编译安装其它依赖库1.安装metis2.安装LAPACK3.安装GMP......