Commit 434465b
committed
perf: memoize cql_parameterized_type() on all type classes
Cache the computed CQL type string in a _cql_type_str class attribute.
The string is computed lazily on first call and returned from cache on
subsequent calls. Since type classes are immutable after
apply_parameters(), no invalidation logic is needed.
All 6 cql_parameterized_type() overrides are covered:
_CassandraType (base), TupleType, UserType, CompositeType,
DynamicCompositeType, VectorType.
Benchmark (500k iters, Python 3.14):
Int32Type (simple): 6.9x (157 -> 23 ns)
MapType<text, int>: 22.9x (464 -> 20 ns)
SetType<float>: 18.2x (371 -> 20 ns)
ListType<double>: 17.3x (357 -> 21 ns)
TupleType<int,text,bool>: 25.0x (509 -> 20 ns)
Nested map/list/tuple: 11.4x (636 -> 56 ns)1 parent a2ab701 commit 434465b
2 files changed
Lines changed: 132 additions & 10 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 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
314 | 314 | | |
315 | 315 | | |
316 | 316 | | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
317 | 322 | | |
318 | 323 | | |
319 | 324 | | |
| |||
428 | 433 | | |
429 | 434 | | |
430 | 435 | | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
431 | 439 | | |
432 | | - | |
433 | | - | |
434 | | - | |
435 | | - | |
436 | | - | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
437 | 448 | | |
438 | 449 | | |
439 | 450 | | |
| |||
1042 | 1053 | | |
1043 | 1054 | | |
1044 | 1055 | | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
1045 | 1059 | | |
1046 | 1060 | | |
1047 | 1061 | | |
1048 | | - | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
1049 | 1065 | | |
1050 | 1066 | | |
1051 | 1067 | | |
| |||
1102 | 1118 | | |
1103 | 1119 | | |
1104 | 1120 | | |
1105 | | - | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
1106 | 1127 | | |
1107 | 1128 | | |
1108 | 1129 | | |
| |||
1182 | 1203 | | |
1183 | 1204 | | |
1184 | 1205 | | |
| 1206 | + | |
| 1207 | + | |
| 1208 | + | |
1185 | 1209 | | |
1186 | | - | |
| 1210 | + | |
| 1211 | + | |
| 1212 | + | |
1187 | 1213 | | |
1188 | 1214 | | |
1189 | 1215 | | |
| |||
1208 | 1234 | | |
1209 | 1235 | | |
1210 | 1236 | | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
1211 | 1240 | | |
1212 | 1241 | | |
1213 | 1242 | | |
1214 | 1243 | | |
1215 | | - | |
| 1244 | + | |
| 1245 | + | |
| 1246 | + | |
1216 | 1247 | | |
1217 | 1248 | | |
1218 | 1249 | | |
| |||
1655 | 1686 | | |
1656 | 1687 | | |
1657 | 1688 | | |
1658 | | - | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
1659 | 1693 | | |
1660 | 1694 | | |
1661 | 1695 | | |
1662 | 1696 | | |
| 1697 | + | |
| 1698 | + | |
0 commit comments