Skip to content

amod26/MethodBenchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 

Repository files navigation

ExecutionTimer πŸ“Š

Java performance timing utility that measures method execution times, generates timestamped CSV reports with start/end times, durations (ms & minutes), and automatic file handling.

Java License: MIT

✨ Features

  • ⏱️ 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)

πŸ“Š Sample Output CSV

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

πŸš€ Quick Start

1. Usage

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
  1. 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages