msgpack.php
Totem
Our great sponsors
msgpack.php | Totem | |
---|---|---|
2 | - | |
385 | 76 | |
- | - | |
2.2 | 3.4 | |
11 months ago | about 1 year ago | |
PHP | PHP | |
MIT License | MIT 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.
Totem
We haven't tracked posts mentioning Totem yet.
Tracking mentions began in Dec 2020.
What are some alternatives?
JSON Machine - Efficient, easy-to-use, and fast PHP JSON stream parser
Cake Collection - [READ-ONLY] Collection library in CakePHP. This repo is a split of the main code that can be found in https://github.com/cakephp/cakephp
Laminas Serializer - Serialize and deserialize PHP structures to a variety of representations
Ardent - A Collections library for PHP.
php-spx - A simple & straight-to-the-point PHP profiling extension with its built-in web UI
CRUDlex - CRUDlex is an easy to use CRUD generator for Symfony 4 and Silex 2 which is great for auto generated admin pages
Packagist - Package Repository Website - try https://packagist.com if you need your own -
Collections
client - PHP client for Tarantool.
Ginq - `LINQ to Object` inspired DSL for PHP
MessagePack - MessagePack serializer implementation for Java / msgpack.org[Java]
PHP Collections - General Purpose Collection Library for PHP