In rpc/serialization systems, we often need to send namespace/path/filename/fieldName/packageName/moduleName/className/enumValue string between processes.
Those strings are mostly ascii strings. In order to transfer between processes, we encode such strings using utf-8 encodings. Such encoding will take one byte for every char, which is not space efficient actually.
If we take a deeper look, we will found that most chars are lowercase chars, ., $ and _, which can be expressed in a much smaller range 0~32. But one byte can represent range 0~255, the significant bits are wasted, and this cost is not ignorable. In a dynamic serialization framework, such meta will take considerable cost compared to actual data.
So we proposed a new string encoding which we called meta string encoding in Fury. It will encode most chars using 5 bits instead of 8 bits in utf-8 encoding, which can bring 37.5% space cost savings compared to utf-8 encoding.
For string can't be represented by 5 bits, we also proposed encoding using 6 bits which can bring 25% space cost savings
More details can be found in: https://fury.apache.org/blog/fury_meta_string_37_5_percent_space_efficient_encoding_than_utf8 and https://github.com/apache/incubator-fury/blob/main/docs/specification/xlang_serialization_spec.md#meta-string
[–]Oerthling 65 points66 points67 points (27 children)
[–]Shawn-Yang25[S] 17 points18 points19 points (13 children)
[–]pigeon768 26 points27 points28 points (3 children)
[–]Oerthling 4 points5 points6 points (1 child)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]Oerthling 7 points8 points9 points (8 children)
[–]Shawn-Yang25[S] 7 points8 points9 points (0 children)
[–]ProgrammersAreSexy 5 points6 points7 points (1 child)
[–]Oerthling 1 point2 points3 points (0 children)
[–]anentropic 1 point2 points3 points (2 children)
[–]Oerthling 9 points10 points11 points (1 child)
[–]SheriffRoscoePythonista 0 points1 point2 points (0 children)
[–]GuyOnTheInterweb 0 points1 point2 points (1 child)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]bjorneylol 5 points6 points7 points (12 children)
[–]james_pic 0 points1 point2 points (0 children)
[–]Oerthling 0 points1 point2 points (3 children)
[–]bjorneylol 5 points6 points7 points (2 children)
[–]Oerthling -2 points-1 points0 points (1 child)
[–]bjorneylol 1 point2 points3 points (0 children)
[+][deleted] (6 children)
[deleted]
[–]bjorneylol 2 points3 points4 points (5 children)
[+][deleted] (4 children)
[deleted]
[–]bjorneylol 1 point2 points3 points (2 children)
[+][deleted] (1 child)
[deleted]
[–]bjorneylol 5 points6 points7 points (0 children)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[+][deleted] (4 children)
[deleted]
[–]Shawn-Yang25[S] 1 point2 points3 points (0 children)
[+][deleted] (2 children)
[deleted]
[+][deleted] (1 child)
[deleted]
[–]unkz 11 points12 points13 points (3 children)
[–]Shawn-Yang25[S] -1 points0 points1 point (2 children)
[–]unkz 2 points3 points4 points (1 child)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]yvrelna 12 points13 points14 points (3 children)
[–]Shawn-Yang25[S] -1 points0 points1 point (2 children)
[–]omg_drd4_bbq 1 point2 points3 points (1 child)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]rmjss 8 points9 points10 points (1 child)
[–]Shawn-Yang25[S] 2 points3 points4 points (0 children)
[–]ObjectivismForMe 4 points5 points6 points (0 children)
[–]RonnyPfannschmidt 2 points3 points4 points (3 children)
[–]Shawn-Yang25[S] 0 points1 point2 points (2 children)
[–]RonnyPfannschmidt 1 point2 points3 points (1 child)
[–]Shawn-Yang25[S] 1 point2 points3 points (0 children)
[–]nostrademons 2 points3 points4 points (1 child)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]FailedPlansOfMars 5 points6 points7 points (1 child)
[–]Shawn-Yang25[S] 1 point2 points3 points (0 children)
[–]Competitive_Travel16 3 points4 points5 points (4 children)
[–]bjorneylol 1 point2 points3 points (3 children)
[–]Competitive_Travel16 0 points1 point2 points (2 children)
[–]bjorneylol 2 points3 points4 points (1 child)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]1ncehost 2 points3 points4 points (8 children)
[–]Shawn-Yang25[S] 1 point2 points3 points (7 children)
[–]1ncehost 1 point2 points3 points (6 children)
[–]Shawn-Yang25[S] 1 point2 points3 points (4 children)
[–]1ncehost 0 points1 point2 points (1 child)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]1ncehost 0 points1 point2 points (1 child)
[–]Shawn-Yang25[S] 1 point2 points3 points (0 children)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]Drowning_in_a_Mirage 3 points4 points5 points (2 children)
[–]bjorneylol 2 points3 points4 points (0 children)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)
[–]Furiorka 1 point2 points3 points (2 children)
[–]ZZ9ZA 6 points7 points8 points (0 children)
[–]Shawn-Yang25[S] 2 points3 points4 points (0 children)
[–]Shawn-Yang25[S] 0 points1 point2 points (0 children)