SnappyOC 1.1

SnappyOC 1.1

Silence0201 维护。



  • Silence

snappy-oc

snappy-oc

Snappy 在 Google 内部被广泛使用,从 BigTable 到 MapReduce 以及内部的 RPC 系统。
snappy 是一个压缩库。它可以利用单颗 Intel Corei7 处理器内核处理至少每秒 250MB~500MB 的数据流。
snappy 的前身是 Zippy。尽管只是一個数据压缩库,但它却被 Google 用于许多内部项目,包括 BigTable,MapReduce 和 RPC。Google 声称它对这个库本身及其算法在数据处理速度上进行了优化,作为代价,并没有考虑输出大小以及与其他类似工具的兼容性问题。Snappy 特地为 64 位 x86 处理器做了优化,在单个 Intel Core i7 处理器内核上能够达到至少每秒 250MB 的压缩速率和每秒 500MB 的解压速率。
如果允许损失一些压缩率的话,那么可以达到更高的压缩速度,尽管生成的压缩文件可能会比其他库的大上 20%至 100%,但是,相比其他的压缩库,Snappy 却能在特定的压缩率下拥有惊人的压缩速度,“压缩普通文本文件的速度是其他库的 1.5-1.7 倍,HTML 能达到 2-4 倍,但是对于 JPEG、PNG 以及其他的已压缩的数据,压缩速度不会有明显改善”。

使用

snappy-oc/SnappyOC 中的静态库添加到您的项目中

导入头文件

#import "Foundation+Snappy.h"

使用

- (void)testJSONCompression {
    NSString *JSONPath = [[NSBundle mainBundle] pathForResource:@"example" ofType:@"json"];
    
    NSData *original = [NSData dataWithContentsOfFile:JSONPath];
    
    NSData *compressedData = [original compressedSnappyData];
    
    NSData *decompressedData = [compressedData decompressedSnappyData];
    
    NSUInteger orignLen = [original length];
    NSUInteger compressLen = [compressedData length];
    
    float bench = (compressLen * 100.0) / orignLen ;
    
    NSLog(@"原数据长度:%ld,压缩后数据长度:%ld,压缩比例:%f",orignLen,compressLen,bench);
    
    NSString *decompressedString = [compressedData decompressedSnappyString];
    
    NSLog(@"JSON String:%@",decompressedString);
    
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:decompressedData options:NSJSONReadingMutableContainers error:NULL];
    NSLog(@"JSON Dictionary:%@",dic);
}

snappy-oc

snappy-oc 遵循 MIT 许可。有关更多信息,请参阅 LICENSE 文件。