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 文件。