WeeChat dev news - Tag - compressionWeeChat development blog2024-01-22T17:53:19+01:00urn:md5:edd364dae4d94114a2ba146603903683DotclearZstandard compression in relay pluginurn:md5:c35146426d7a937c4801cf155bd9df6f2022-01-07T20:47:00+00:002022-01-08T15:14:01+00:00Sébastien Helleupluginscompressionrelayzstandardzstd <p><a href="https://facebook.github.io/zstd/" hreflang="en" title="Zstandard">Zstandard</a> compression has been added in weechat protocol of relay plugin (see important notes in the <a href="https://weechat.org/files/releasenotes/ReleaseNotes-devel.html#v3.5_relay_weechat_compression_zstd" hreflang="en" title="release notes">release notes</a>).<br /></p>
<p>It offers better and faster compression (on WeeChat side) and faster decompression (client side).</p>
<p>Example of a small message (53KB), default compression (20):</p>
<pre> WeeChat: obj: 2964/53611 bytes (<strong>zstd</strong>: <strong>95%</strong>, <strong>0,12ms</strong>)
Client: decompressed (<strong>zstd</strong>): 53606 bytes, ratio: 95%, parsed in <strong>0.67ms</strong>)</pre>
<pre> WeeChat: obj: 3752/53611 bytes (<strong>zlib</strong>: <strong>94%</strong>, <strong>0,23ms</strong>), id: quiet
Client: decompressed (<strong>zlib</strong>): 53606 bytes, ratio: 94%, parsed in <strong>2.10ms</strong>)</pre>
<p>Example of a big message (2.3MB), default compression (20):</p>
<pre> WeeChat: obj: 133280/2376095 bytes (<strong>zstd</strong>: <strong>95%</strong>, <strong>2,97ms</strong>), id: quiet
Client: decompressed (<strong>zstd</strong>): 2376090 bytes, ratio: 95%, parsed in <strong>15.03ms</strong>)</pre>
<pre> WeeChat: obj: 345255/2376095 bytes (<strong>zlib</strong>: <strong>86%</strong>, <strong>12,72ms</strong>), id: quiet
Client: decompressed (<strong>zlib</strong>): 2376090 bytes, ratio: 86%, parsed in <strong>21.20ms</strong>)</pre>
<p>So with the same compression level:</p>
<ul>
<li>zstd is up to <strong>4x</strong> faster on compression than zlib (WeeChat side)</li>
<li>zstd is up to <strong>3x</strong> faster on decompression than zlib (client side)</li>
<li>compressed packets are up to <strong>2.6x</strong> smaller with zstd than zlib.</li>
</ul>