Skip to content

perf improvement to char array serialisation - #84

Merged
sshanks-kx merged 1 commit into
KxSystems:mainfrom
sshanks-kx:support
Aug 12, 2026
Merged

perf improvement to char array serialisation#84
sshanks-kx merged 1 commit into
KxSystems:mainfrom
sshanks-kx:support

Conversation

@sshanks-kx

Copy link
Copy Markdown
Collaborator

No description provided.

@sshanks-kx sshanks-kx self-assigned this Aug 12, 2026
@sshanks-kx

Copy link
Copy Markdown
Collaborator Author

Before

StringArray
| Method                                              | Number | Mean         | Error        | StdDev       | Median       | Max          | Gen0      | Gen1     | Gen2     | Allocated   |
|---------------------------------------------------- |------- |-------------:|-------------:|-------------:|-------------:|-------------:|----------:|---------:|---------:|------------:|
| ConnectionSerialisesAndDeserialisesStringArrayInput | 1000   |     82.78 us |     0.422 us |     0.395 us |     82.60 us |     83.55 us |    1.3428 |   0.1221 |        - |    95.21 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 10000  |    921.22 us |     4.559 us |     4.042 us |    920.46 us |    929.14 us |   34.1797 |  34.1797 |  34.1797 |  1035.65 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 100000 | 11,903.46 us |    75.243 us |    70.383 us | 11,887.53 us | 12,035.93 us |  468.7500 | 437.5000 | 343.7500 | 10527.93 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 500000 | 69,583.58 us | 1,377.253 us | 2,144.217 us | 69,716.72 us | 74,019.52 us | 1000.0000 | 875.0000 | 375.0000 | 53106.07 KB |
| Method                                              | Number | Mean         | Error        | StdDev       | Median       | Max          | Gen0      | Gen1     | Gen2     | Allocated   |
|---------------------------------------------------- |------- |-------------:|-------------:|-------------:|-------------:|-------------:|----------:|---------:|---------:|------------:|
| ConnectionSerialisesAndDeserialisesStringArrayInput | 1000   |     82.47 us |     0.942 us |     0.881 us |     82.15 us |     84.39 us |    1.3428 |   0.1221 |        - |    95.21 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 10000  |  1,045.60 us |    16.986 us |    15.057 us |  1,044.38 us |  1,068.91 us |   33.2031 |  33.2031 |  33.2031 |  1035.65 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 100000 | 11,734.92 us |    81.863 us |    76.575 us | 11,747.30 us | 11,826.08 us |  468.7500 | 437.5000 | 343.7500 | 10527.93 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 500000 | 70,521.44 us | 1,382.912 us | 2,069.877 us | 70,775.66 us | 73,889.84 us | 1000.0000 | 875.0000 | 375.0000 | 53106.07 KB |

After

StringArray
| Method                                              | Number | Mean         | Error      | StdDev     | Median       | Max          | Gen0     | Gen1     | Gen2     | Allocated   |
|---------------------------------------------------- |------- |-------------:|-----------:|-----------:|-------------:|-------------:|---------:|---------:|---------:|------------:|
| ConnectionSerialisesAndDeserialisesStringArrayInput | 1000   |     64.17 us |   0.427 us |   0.356 us |     64.08 us |     65.06 us |   0.8545 |   0.1221 |        - |    56.93 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 10000  |    805.93 us |   7.883 us |   7.373 us |    808.54 us |    815.93 us |  34.1797 |  34.1797 |  34.1797 |   645.81 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 100000 |  9,186.20 us |  56.716 us |  50.277 us |  9,189.54 us |  9,269.50 us | 375.0000 | 343.7500 | 312.5000 |  6622.57 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 500000 | 45,140.39 us | 860.755 us | 845.376 us | 45,121.85 us | 47,134.21 us | 666.6667 | 583.3333 | 333.3333 | 33575.59 KB |
| Method                                              | Number | Mean         | Error      | StdDev       | Median       | Max          | Gen0     | Gen1     | Gen2     | Allocated   |
|---------------------------------------------------- |------- |-------------:|-----------:|-------------:|-------------:|-------------:|---------:|---------:|---------:|------------:|
| ConnectionSerialisesAndDeserialisesStringArrayInput | 1000   |     64.39 us |   0.231 us |     0.205 us |     64.38 us |     64.83 us |   0.8545 |   0.1221 |        - |    56.93 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 10000  |    794.84 us |  10.159 us |     9.006 us |    789.60 us |    807.88 us |  34.1797 |  34.1797 |  34.1797 |   645.81 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 100000 |  9,342.87 us |  58.679 us |    52.018 us |  9,337.29 us |  9,428.79 us | 359.3750 | 328.1250 | 296.8750 |  6622.57 KB |
| ConnectionSerialisesAndDeserialisesStringArrayInput | 500000 | 45,509.30 us | 786.517 us | 1,049.978 us | 45,517.83 us | 48,034.63 us | 600.0000 | 500.0000 | 300.0000 | 33575.58 KB |

Before

CharArray
| Method                                            | Number | Mean       | Error     | StdDev    | Median     | Max        | Gen0     | Gen1     | Gen2     | Allocated  |
|-------------------------------------------------- |------- |-----------:|----------:|----------:|-----------:|-----------:|---------:|---------:|---------:|-----------:|
| ConnectionSerialisesAndDeserialisesCharArrayInput | 1000   |   1.115 us | 0.0120 us | 0.0107 us |   1.110 us |   1.140 us |   0.0801 |        - |        - |    5.33 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 10000  |   7.214 us | 0.0332 us | 0.0278 us |   7.212 us |   7.267 us |   0.7477 |   0.0229 |        - |   49.27 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 100000 | 193.737 us | 1.6882 us | 1.5791 us | 194.088 us | 196.716 us | 153.8086 | 153.8086 | 153.8086 |  488.78 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 500000 | 804.737 us | 4.8225 us | 4.2750 us | 804.839 us | 810.504 us | 500.0000 | 500.0000 | 500.0000 | 2441.98 KB |
| Method                                            | Number | Mean       | Error     | StdDev    | Median     | Max        | Gen0     | Gen1     | Gen2     | Allocated  |
|-------------------------------------------------- |------- |-----------:|----------:|----------:|-----------:|-----------:|---------:|---------:|---------:|-----------:|
| ConnectionSerialisesAndDeserialisesCharArrayInput | 1000   |   1.075 us | 0.0077 us | 0.0068 us |   1.074 us |   1.090 us |   0.0801 |        - |        - |    5.33 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 10000  |   7.213 us | 0.0317 us | 0.0265 us |   7.224 us |   7.239 us |   0.7477 |   0.0229 |        - |   49.27 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 100000 | 194.639 us | 1.7290 us | 1.6173 us | 194.532 us | 197.383 us | 153.8086 | 153.8086 | 153.8086 |  488.78 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 500000 | 818.729 us | 7.8817 us | 7.3725 us | 819.882 us | 828.340 us | 490.2344 | 490.2344 | 490.2344 | 2442.19 KB |

After

CharArray
| Method                                            | Number | Mean         | Error       | StdDev       | Median       | Max          | Gen0     | Gen1     | Gen2     | Allocated  |
|-------------------------------------------------- |------- |-------------:|------------:|-------------:|-------------:|-------------:|---------:|---------:|---------:|-----------:|
| ConnectionSerialisesAndDeserialisesCharArrayInput | 1000   |     816.9 ns |     9.93 ns |      9.29 ns |     813.5 ns |     836.8 ns |   0.0505 |        - |        - |    3.33 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 10000  |   4,676.1 ns |    11.03 ns |     10.32 ns |   4,674.6 ns |   4,694.1 ns |   0.4501 |   0.0153 |        - |    29.7 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 100000 | 160,132.2 ns | 1,329.88 ns |  1,243.97 ns | 160,479.0 ns | 162,688.9 ns |  90.8203 |  90.8203 |  90.8203 |   293.4 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 500000 | 501,402.1 ns | 9,906.71 ns | 16,551.89 ns | 506,600.2 ns | 523,391.7 ns | 285.1563 | 285.1563 | 285.1563 | 1466.41 KB |
| Method                                            | Number | Mean         | Error       | StdDev      | Median       | Max          | Gen0     | Gen1     | Gen2     | Allocated  |
|-------------------------------------------------- |------- |-------------:|------------:|------------:|-------------:|-------------:|---------:|---------:|---------:|-----------:|
| ConnectionSerialisesAndDeserialisesCharArrayInput | 1000   |     812.0 ns |     6.29 ns |     5.58 ns |     810.3 ns |     824.7 ns |   0.0505 |        - |        - |    3.33 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 10000  |   4,597.5 ns |    13.50 ns |    12.63 ns |   4,600.3 ns |   4,616.9 ns |   0.4501 |   0.0153 |        - |    29.7 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 100000 | 161,629.5 ns | 3,226.39 ns | 2,860.11 ns | 160,547.7 ns | 167,643.9 ns |  90.8203 |  90.8203 |  90.8203 |   293.4 KB |
| ConnectionSerialisesAndDeserialisesCharArrayInput | 500000 | 503,000.7 ns | 8,535.01 ns | 7,566.06 ns | 505,503.2 ns | 512,128.9 ns | 287.1094 | 287.1094 | 287.1094 | 1466.41 KB |

@sshanks-kx
sshanks-kx merged commit 2167b27 into KxSystems:main Aug 12, 2026
1 check passed
@sshanks-kx
sshanks-kx deleted the support branch August 12, 2026 13:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant