Commit 53d578d
committed
perf: replace BytesIO with b''.join() in collection serialization
Replace io.BytesIO() buffer pattern with list accumulation + b''.join()
in serialize_safe methods for ListType, SetType, MapType, TupleType,
and UserType. Also pre-compute _INT32_NULL = int32_pack(-1) as a
module-level constant to avoid repeated packing of the null sentinel.
Buffer assembly micro-benchmarks (isolating the BytesIO overhead from
per-element to_binary() cost):
Scenario Before (us) After (us) Speedup
List 100 elements 9.0 8.6 1.05x
List 10 elements 1.1 0.9 1.18x
List 10 all-null 0.8 0.4 2.23x
Map 10 entries 2.0 1.6 1.24x
The all-null case benefits most from the pre-computed _INT32_NULL
constant, which eliminates repeated int32_pack(-1) calls.
Note: PR scylladb#763 on this repo adds only the _INT32_NULL constant;
this commit is a superset that also replaces BytesIO with b''.join()
across all four collection/composite type serializers.1 parent 8e6c4d4 commit 53d578d
2 files changed
Lines changed: 163 additions & 25 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
66 | 69 | | |
67 | 70 | | |
68 | 71 | | |
| |||
836 | 839 | | |
837 | 840 | | |
838 | 841 | | |
839 | | - | |
840 | | - | |
841 | 842 | | |
| 843 | + | |
842 | 844 | | |
843 | 845 | | |
844 | | - | |
| 846 | + | |
845 | 847 | | |
846 | 848 | | |
847 | | - | |
848 | | - | |
849 | | - | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
850 | 852 | | |
851 | 853 | | |
852 | 854 | | |
| |||
899 | 901 | | |
900 | 902 | | |
901 | 903 | | |
902 | | - | |
903 | | - | |
904 | 904 | | |
905 | 905 | | |
906 | 906 | | |
907 | 907 | | |
908 | 908 | | |
| 909 | + | |
909 | 910 | | |
910 | 911 | | |
911 | 912 | | |
912 | | - | |
913 | | - | |
| 913 | + | |
| 914 | + | |
914 | 915 | | |
915 | | - | |
| 916 | + | |
916 | 917 | | |
917 | 918 | | |
918 | | - | |
919 | | - | |
| 919 | + | |
| 920 | + | |
920 | 921 | | |
921 | | - | |
922 | | - | |
| 922 | + | |
| 923 | + | |
923 | 924 | | |
924 | 925 | | |
925 | 926 | | |
| |||
957 | 958 | | |
958 | 959 | | |
959 | 960 | | |
960 | | - | |
| 961 | + | |
961 | 962 | | |
962 | 963 | | |
963 | 964 | | |
964 | | - | |
965 | | - | |
| 965 | + | |
| 966 | + | |
966 | 967 | | |
967 | | - | |
968 | | - | |
| 968 | + | |
| 969 | + | |
969 | 970 | | |
970 | 971 | | |
971 | 972 | | |
| |||
1026 | 1027 | | |
1027 | 1028 | | |
1028 | 1029 | | |
1029 | | - | |
| 1030 | + | |
1030 | 1031 | | |
1031 | 1032 | | |
1032 | 1033 | | |
| |||
1038 | 1039 | | |
1039 | 1040 | | |
1040 | 1041 | | |
1041 | | - | |
1042 | | - | |
| 1042 | + | |
| 1043 | + | |
1043 | 1044 | | |
1044 | | - | |
1045 | | - | |
| 1045 | + | |
| 1046 | + | |
1046 | 1047 | | |
1047 | 1048 | | |
1048 | 1049 | | |
| |||
0 commit comments