Performance Benchmarks
Tracelet’s core Dart algorithms are continuously benchmarked against strict performance thresholds. This ensures that features like Kalman filtering, point-in-polygon geofencing, and battery budgeting remain exceptionally lightweight and do not cause battery drain.
The interactive graph below automatically visualizes the history of key benchmark metrics from recent commits.
The data is pulled dynamically from the BENCHMARK.md file tracked in the repository.
Lower values (µs/op) represent better performance.
Loading graph...
Benchmark Descriptions
| Benchmark | Description | Hot Path |
|---|---|---|
kalman_process_single | Single Kalman filter predict+update cycle | Every GPS fix |
kalman_process_100_fixes | 100 sequential GPS fixes through Kalman filter | Sustained tracking |
kalman_process_1k_fixes | 1000 sequential GPS fixes through Kalman filter | Long session |
kalman_reset | Reset filter state (Float64List fillRange) | Mode change |
haversine_single | Single haversine distance calculation | Every GPS fix (3+ calls) |
haversine_1k_pairs | 1000 sequential haversine calculations | Batch processing |
pip_4v | Point-in-polygon, 4-vertex polygon | Simple geofence |
pip_10v | Point-in-polygon, 10-vertex polygon | Medium polygon |
pip_50v | Point-in-polygon, 50-vertex polygon | Complex polygon |
pip_100v | Point-in-polygon, 100-vertex polygon | Detailed boundary |
pip_500v | Point-in-polygon, 500-vertex polygon | High-detail polygon |
geofence_eval_10_circular | Evaluate 10 circular geofences | Small deployment |
geofence_eval_100_circular | Evaluate 100 circular geofences | Medium deployment |
geofence_eval_500_circular | Evaluate 500 circular geofences | Large deployment |
geofence_eval_10_polygon_6v | Evaluate 10 polygon geofences (6 vertices each) | Polygon zones |
geofence_eval_50_polygon_6v | Evaluate 50 polygon geofences (6 vertices each) | Many polygon zones |
processor_1k_fixes | Full LocationProcessor pipeline, 1000 fixes | Core tracking loop |
processor_1k_adaptive | LocationProcessor with adaptive mode, 1000 fixes | Battery-aware tracking |
trip_manager_5k_waypoints | TripManager accumulating 5000 waypoints | Long trip |
schedule_parse | Parse a schedule string | Schedule evaluation |
schedule_matches | Check if time matches a schedule | Schedule evaluation |
schedule_isWithin_5_entries | Check 5 schedule entries | Multi-schedule |
adaptive_compute | AdaptiveSamplingEngine single computation | Every GPS fix (adaptive) |
location_fromMap | Deserialize Location from platform map | Every GPS fix |
location_toMap | Serialize Location to map | Persistence/HTTP |
location_fromMap_toMap_roundtrip | Full serialization round-trip | Legacy path |
location_copyWithCoords | Copy Location with new coords (optimized) | Kalman output |
geofence_fromMap_circular | Deserialize circular geofence | Geofence loading |
geofence_fromMap_polygon | Deserialize polygon geofence with vertices | Polygon loading |
delta_encode_10 | Delta-encode batch of 10 locations | HTTP sync |
delta_encode_100 | Delta-encode batch of 100 locations | HTTP sync |
delta_encode_500 | Delta-encode batch of 500 locations | Bulk sync |
delta_decode_10 | Delta-decode batch of 10 locations | Server restore |
delta_decode_100 | Delta-decode batch of 100 locations | Server restore |
delta_decode_500 | Delta-decode batch of 500 locations | Bulk restore |
delta_roundtrip_100 | Full encode→decode round-trip, 100 locations | Correctness path |
battery_budget_single_sample | Single battery sample processing | Every battery read |
battery_budget_60_samples | 60 samples (1-hour simulation) | Sustained tracking |
battery_budget_heavy_drain | 120 samples with aggressive drain | Worst-case budget |
carbon_trip_100_locations | Full trip with 100 GPS fixes | Trip completion |
carbon_onLocation | Per-location carbon accounting | Every GPS fix |
carbon_setActivity | Activity type switching | Activity change |
carbon_cumulative_report | Generate cumulative report (10 trips) | Report request |
persist_decider_location | Location persist decision (all modes) | Every GPS fix |
persist_decider_geofence | Geofence persist decision (all modes) | Geofence event |
config_fromMap | Deserialize full Config from map | Config restore |
config_toMap | Serialize full Config to map | Config persist |
config_roundtrip | Full Config serialization round-trip | Config update |
state_fromMap | Deserialize State from map | State restore |
state_toMap | Serialize State to map | State persist |
route_context_toMap | Serialize RouteContext to map | Route context attach |
route_context_fromMap | Deserialize RouteContext from map | Route context restore |
route_context_roundtrip | Full RouteContext serialization round-trip | Route context update |
sync_body_context_toMap_50 | Serialize SyncBodyContext with 50 locations | Sync body build |
sync_body_context_fromMap_50 | Deserialize SyncBodyContext with 50 locations | Sync body restore |
http_config_ssl_toMap | Serialize HttpConfig with SSL pinning fields | Config persist |
http_config_ssl_fromMap | Deserialize HttpConfig with SSL pinning fields | Config restore |
http_config_ssl_roundtrip | Full HttpConfig+SSL serialization round-trip | Config update |
For the full testing methodologies, refer to the BENCHMARK.md file in the Tracelet repository root.
Last updated on