Java performance timing utility that measures method execution times, generates timestamped CSV reports with start/end times, durations (ms & minutes), and automatic file handling.
- β±οΈ Precise timing - Start/End method tracking with
start()/end() - π CSV export - Auto-generates timestamped reports (
ExecTiming_20260218_001200.csv) - π Dual format - Milliseconds + Minutes (2 decimal places)
- π Auto-naming -
C:\DEV\ExecTiming_YYYYMMDD_hhmmss.csv - π Thread-safe - HashMap tracks multiple methods
- π CSV headers: Method/DAO, Start Time, End Time, Duration (ms), Duration (mins)
Method/DAO,Start Time (mins),End Time (mins),Total Time (ms),Total Time (mins) userDAO.findById,2026-02-18 00:12:34.123,2026-02-18 00:12:34.456,333,0.56 orderService.process,2026-02-18 00:12:34.789,2026-02-18 00:12:35.234,445,0.74
ExecutionTimer timer = new ExecutionTimer();
// Start timing
timer.start("userDAO.findById");
timer.start("orderService.process");
// Your code...
User user = userService.findById(123);
List<Order> orders = orderService.process(user);
// End timing
timer.end("userDAO.findById");
timer.end("orderService.process");
// Export CSV
timer.writeToCSV(); // Creates: C:\DEV\ExecTiming_20260218_001200.csv- Output Location
C:\DEV\ExecTiming_YYYYMMDD_hhmmss.csv
π οΈ API
| Method | Description |
|---|---|
| start(String methodName) | Start timer for method |
| end(String methodName) | End timer, calculate duration |
| writeToCSV() | Generate timestamped CSV report |
π Sample Integration
public class PerformanceTest {
public static void main(String[] args) {
ExecutionTimer timer = new ExecutionTimer();
// Database operations
timer.start("userDAO.findAll");
List<User> users = userDAO.findAll();
timer.end("userDAO.findAll");
// Business logic
timer.start("reportService.generate");
Report report = reportService.generate(users);
timer.end("reportService.generate");
// Export results
timer.writeToCSV();
}
}
βοΈ Configuration
| Property | Default | Description |
|---|---|---|
| fileOutputPathPrefix | C:\DEV\ | CSV output directory |
| LOGICAL_FILENAME | ExecTiming | CSV filename prefix |
π CSV Format
| Column | Format | Example |
|---|---|---|
| Method/DAO | String | userDAO.findById |
| Start Time | Timestamp | 2026-02-18 00:12:34.123 |
| End Time | Timestamp | 2026-02-18 00:12:34.456 |
| Duration (ms) | Long | 333 |
| Duration (mins) | Double | 0.56 |
π Troubleshooting
"FileNotFoundException"
fileOutputPathPrefix = "C:\\\\DEV\\\\"; // Ensure directory exists
Timestamps not showing minutes
Headers use java.sql.Timestamp - shows full datetime
Missing timings
Ensure start() called BEFORE end() for same methodName
π§ͺ Testing
java
@Test
public void testTiming() {
ExecutionTimer timer = new ExecutionTimer();
timer.start("testMethod");
Thread.sleep(100); // Simulate work
timer.end("testMethod");
timer.writeToCSV(); // Creates test CSV
}
π Performance Notes
O(1) lookups via HashMap
Zero GC pressure - minimal object creation
Thread-safe for concurrent timing
πΎ License
MIT License - see LICENSE Β© 2026