C - 有效地查找和替换 gzip 内容上的数据



我的基于 c Linux 的程序输入是:

char *in_str, char *find_str, char *replacing_str

in_str是压缩数据 (GZIP)。

程序需要查找未压缩的输入数据中的find_str,将其替换为replacing_str,然后重新压缩数据。

执行此操作

的简单方法是使用许多可用的 gzip 压缩/解压缩库之一来解压缩数据、操作未压缩的数据,然后重新压缩输出。但是我需要使其尽可能高效(这是一个RT程序)。

我想知道使用动态库(例如 zlibc)方法或简单地执行上述操作是否更有效。

也许值得一提的是:

  • find_str和replacing_str字符串是数据的一小部分
  • 它们的长度不相等
  • find_str应该出现大约 4 或 5 次
  • 未压缩的数据镜头为 ~2K - 6K 字节

有没有人熟悉实现这一点的有效方法?

谢谢

无论如何,您都必须解压缩才能搜索字符串。 (您可能只能这样做一次并构建索引。 但是,这可能比未压缩的数据大得多,因此您不妨将其存储为未压缩的数据。

您可以通过提前准备 gzip 文件以使用较小的无历史记录单元进行压缩来避免重新压缩所有这些文件,例如,使用 zlib 的Z_FULL_FLUSH选项。 这将根据您执行的频率略微减少压缩,但如果只需要重新压缩许多块中的一个,则会大大加快构建输出的速度。

最新更新