-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
Multiple GUI classes store icon bitmaps in instance fields that are created per-instance, but represent identical images. Converting to static readonly fields would save memory and reduce initialization overhead.
High Priority Classes (5+ bitmaps each)
1. ProgressUI.cs
File: Rdmp.UI/Progress/ProgressUI.cs
Lines: 52-56 (declarations), 87-91 (initialization)
// Current (instance fields):
private Bitmap _information;
private Bitmap _warning;
private Bitmap _warningEx;
private Bitmap _fail;
private Bitmap _failEx;
// In constructor:
_information = ChecksAndProgressIcons.Information.ImageToBitmap();
// ... etcImpact: High - ProgressUI is frequently instantiated. 5 bitmaps per instance.
2. ChecksUI.cs
File: Rdmp.UI/ChecksUI/ChecksUI.cs
Lines: 40-44 (declarations), 56-60 (initialization)
private Bitmap _tick;
private Bitmap _warning;
private Bitmap _warningEx;
private Bitmap _fail;
private Bitmap _failEx;Impact: High - 5 bitmaps per instance
Medium Priority Classes (2-3 bitmaps each)
| File | Lines | Bitmaps |
|---|---|---|
DatasetRaceway.cs |
68-79 | _ignoreRowCounts, _respectRowCounts |
SimpleCohortSetUI.cs |
30-31, 44-45 | _linkImage, _unlinkImage |
FavouriteColumnProvider.cs |
26-27, 35-36 | _starFull, _starHollow |
LoadStateUI.cs |
23-25, 34-36 | _unknown, _noLoadUnderway, _executingOrCrashed |
SelectColumnUI.cs |
58-59, 129-130 | _add, _delete |
Good Examples (Already Static)
These classes demonstrate the correct pattern:
RAGSmileyToolStrip.cs:81-83
private static readonly Bitmap Green = CatalogueIcons.TinyGreen.ImageToBitmap();
private static readonly Bitmap Yellow = CatalogueIcons.TinyYellow.ImageToBitmap();
private static readonly Bitmap Red = CatalogueIcons.TinyRed.ImageToBitmap();Recommended Fix Pattern
// Before (instance field):
private Bitmap _icon;
public MyControl() {
_icon = SomeIcons.Icon.ImageToBitmap();
}
// After (static readonly):
private static readonly Bitmap IconBitmap = SomeIcons.Icon.ImageToBitmap();Estimated Impact
Assuming ~10KB per bitmap and 100 instances during application lifetime:
- Memory savings: 20-50MB
- Reduced GC pressure: Fewer allocations
- Faster initialization: No bitmap creation per instance
Labels
enhancement, performance
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request