getCacheStats method

  1. @override
ClassLoaderStats getCacheStats()
override

Gets cache statistics for monitoring and optimization.

Returns:

Available Metrics

  • Hit Rate: Percentage of cache hits vs misses
  • Cache Sizes: Number of entries in each cache category
  • Memory Usage: Estimated memory consumption
  • Load Times: Average class loading performance

Example

final stats = loader.getCacheStats();
print('Cache hit rate: ${stats.hitRate}%');
print('Classes cached: ${stats.classCount}');
print('Memory usage: ${stats.memoryUsage} bytes');

Monitoring Use Cases

  • Performance tuning and optimization
  • Memory usage tracking
  • Cache efficiency analysis
  • Capacity planning

Implementation

@override
ClassLoaderStats getCacheStats() {
  final totalRequests = _hitCount + _missCount;
  final hitRate = totalRequests > 0 ? _hitCount / totalRequests : 0.0;

  final avgLoadTime = _loadTimes.isNotEmpty
      ? _loadTimes.reduce((a, b) => a + b) / _loadTimes.length
      : 0.0;

  // Estimate memory usage (rough calculation)
  final memoryUsage = (_classCache.length * 1024) + // ~1KB per class
    (_subclassCache.length * 512) +  // ~512B per subclass list
    (_interfaceCache.length * 256) + // ~256B per interface list
    (_mixinCache.length * 256);      // ~256B per mixin list

  return ClassLoaderStats(
    classCount: _classCache.length,
    subclassCount: _subclassCache.length,
    interfaceCount: _interfaceCache.length,
    declaredInterfaceCount: 0,
    mixinCount: _mixinCache.length,
    declaredMixinCount: 0,
    hitRate: hitRate,
    hitCount: _hitCount,
    missCount: _missCount,
    memoryUsage: memoryUsage,
    averageLoadTime: avgLoadTime,
    successfulLoads: _successfulLoads,
    failedLoads: _failedLoads,
  );
}