msgpack.php
smaz
Our great sponsors
msgpack.php | smaz | |
---|---|---|
2 | 3 | |
385 | 1,131 | |
- | - | |
2.2 | 0.0 | |
10 months ago | over 4 years ago | |
PHP | C | |
MIT License | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
msgpack.php
-
Advanced MessagePack capabilities
That's enough theory, let's start coding! For these examples, we'll use the msgpack.php MessagePack library since it provides a convenient API to handle extension types. I hope you'll find these code examples easy to understand even if you use other libraries. Since I mentioned UUID, let's implement support for this data type as an example. To do so, we'll need to write an extension---a class to serialize and deserialize UUID values. We will use the symfony/uid library to make handling such values easier.
-
Don't blindly trust profilers
I recently encountered an interesting case. I was trying to optimize the MessagePack unpacking, but after testing the performance of the new faster (as I thought) version, it turned out to be slower than the original implementation. Trying to figure out which part of the code was causing the slowdown, I reran the tests with Blackfire and was surprised to see that the profiler reported a 30% improvement in the new version, which was the exact opposite of my results (read the comments on the linked issue to learn why). Note that this is not a problem with this particular profiler, most PHP profilers will do the same. So I decided to share this finding and encourage you not to blindly trust profilers and always do your own benchmarking, especially when you do such micro-optimizations.
smaz
-
Advanced MessagePack capabilities
Choose the data compression algorithm based on the specifics of your data. For example, if you are working with lots of short strings, take a look at [*SMAZ](https://github.com/antirez/smaz).*
-
Improving short string compression.
Take a look at this. Idea behind it seems nice, but it's fixed dictionary ("codebook") was clearly made for English language, and the algorithm itself is really simple. How can we impove on this? Dynamic dictionary won't do, since you have to store it somewhere, nullifying benefits of using such algorithm. Beyond that I have no idea.
-
C Deep
smaz - Efficient string compression library. BSD-3-Clause
What are some alternatives?
JSON Machine - Efficient, easy-to-use, and fast PHP JSON stream parser
LZMAT - git mirror of LZMAT (http://www.matcode.com/lzmat.htm)
Laminas Serializer - Serialize and deserialize PHP structures to a variety of representations
Snappy - A fast compressor/decompressor
php-spx - A simple & straight-to-the-point PHP profiling extension with its built-in web UI
doboz
Packagist - Package Repository Website - try https://packagist.com if you need your own -
zstd - Zstandard - Fast real-time compression algorithm
client - PHP client for Tarantool.
ZLib - A massively spiffy yet delicately unobtrusive compression library.
MessagePack - MessagePack serializer implementation for Java / msgpack.org[Java]
LZHAM - Lossless data compression codec with LZMA-like ratios but 1.5x-8x faster decompression speed, C/C++