C
Implementing performance metrics platform APIs
Derive from the Qul::Platform::PerformanceMetrics structure and override the virtual functions for maximum heap usage, maximum stack usage, and CPU load. Create a custom implementation for the performance metrics for your platform:
struct ExamplePerformanceMetrics : PerformanceMetrics { uint64_t maxHeapUsage() QUL_DECL_OVERRIDE { /*Custom maximum heap usage function depending on Platform and toolchains.*/ return 0; } uint64_t maxStackUsage() QUL_DECL_OVERRIDE { /*Custom maximum stack usage function depending on Platform and toolchains.*/ return 0; } #if defined(QUL_ENABLE_HARDWARE_PERFORMANCE_LOGGING) float cpuLoad() QUL_DECL_OVERRIDE { /*Custom CPU load measurement function depending on Platform and toolchains.*/ return 0.f; }; #endif };
Implement PlatformContext::performanceMetrics in your platform context to return this information to provide the ExamplePerformanceMetrics
structure access to the Qt Quick Ultralite Core.
Platform::PerformanceMetrics *ExamplePlatform::performanceMetrics(void) { static ExamplePerformanceMetrics metrics; return &metrics; }
Memory statistics
The platform offers functions to get memory statistics like heap and stack sizes.
The Qul::Platform::printHeapStats and Qul::Platform::printStackStats functions must be implemented to print such information. You could use the mallinfo()
function, if it is available on your platform.
void printHeapStats(void) { struct mallinfo mi = mallinfo(); PlatformInterface::log("Heap: %u/%u (in-use/total)\r\n", mi.uordblks, mi.arena); } void printStackStats(void) { // Replace this with actual measuring for your platform uint32_t maxUsedStackSize = 0; PlatformInterface::log("Stack: %u (peak)\r\n", maxUsedStackSize); }
void printHeapStats(void) { struct mallinfo mi = __iar_dlmallinfo(); PlatformInterface::log("Heap: %u/%u (in-use/total)\r\n", mi.uordblks, mi.arena); } void printStackStats(void) { // Replace this with actual measuring for your platform uint32_t maxUsedStackSize = 0; PlatformInterface::log("Stack: %u (peak)\r\n", maxUsedStackSize); }
Available under certain Qt licenses.
Find out more.