## 4 Results
### Serialization/Deserialization Stress Testing  
Serialization and deserialization are crucial processes within the virtual machine, enabling the conversion of function objects to binary data and back, respectively. These operations play an essential role in ensuring data persistence, where serialization allows for values to be saved and retrieved efficiently, and deserialization facilitates the reloading of data into the virtual machine's environment. Particularly in scenarios involving reconfiguration requests, deserialization becomes vital as it interprets new configurations by transforming the binary data into executable functions [28]. This transformation is fundamental for updating the virtual machine's behaviour on the fly, ensuring it adapts seamlessly to new operational requirements. To evaluate the performance and reliability of these processes, a stress test was conducted on a test suite containing 294 tests of varying complexity, each executed four times. The results, as demonstrated in Figure 20, show that the serialization times are generally consistent, with a median processing time of 160 microseconds. The worst-case scenario reaches 8.357 milliseconds, which remains within an acceptable range for most real-time applications. Even for larger data loads, where tests approach the 800 KB size limit, the observed serialization speed is approximately 10.446 microseconds per kilobyte. This performance should adequately support real-time behaviour updates and system changes, meeting the demand for prompt data preservation under typical conditions. Deserialization, a process with arguably higher significance due to its interaction with new configurations, shows a median completion time of 964 microseconds and a worst-case scenario of 9.396 milliseconds. This elevated time requirement can likely be attributed to the additional tasks involved in deserialization, such as the allocation of new objects for functions and values. Furthermore, deserialization involves potential dynamic array resizing, particularly when initializing large pools for global variables or value maps. Although garbage collection could influence this process by deallocating resources, it is often deactivated during deserialization to prevent the premature removal of newly allocated structures, thus prioritizing stability over memory efficiency during the loading phase. Additionally, the two histograms provided in Figure 21 depict distinct distributions for time (in milliseconds) and memory usage (in kilobytes) during the serialization process. Both distributions are notably right-skewed, with most values concentrated at the lower end of the spectrum. The time distribution shows a pronounced peak between 0 and 500 microseconds, indicating that the majority of serialization tasks are completed rapidly, with only a few outliers extending up to several milliseconds. Similarly, the memory distribution reveals that most serialization tasks consume minimal memory, with the majority falling below the 50 KB threshold, while only a small number of cases exhibit higher memory demands. This skewness in both distributions underscores the efficiency of typical operations in terms of both execution speed and memory consumption, though  
Figure 20: Serialization and deserialization times during stress testing (authors’ contribution). the presence of long-tail outliers suggests certain high-complexity scenarios that require optimization to minimize resource usage. These results are significant as they highlight the virtual machine's operational efficiency under standard conditions, where both serialization and deserialization remain well within real-time processing requirements. The similarity in the distribution shapes for time and memory usage also suggests a potential relationship between these metrics; however, further statistical analysis would be necessary to ascertain any direct correlation [3].