### Optimizing date calculations

I wrote a naive little algorithm to calculate the end date of a scheduled event.

There are the following restraints:

- Total number of hours
- Number of hours per day
- Workdays per week
- Skip holidays

So, the

**pseudo-code looks like this**:

While there are hours

If it's a workday

diminish the hour counter by the amount of hours per day

Go to the next day

This works, but it's slow. Let's do this moar better!

**New pseudo-code**:

Hours / Hours per day ===> Days

Days / Workdays per week ===> Weeks

(7 - workdays per week) * Weeks ===> More Days

Add the number of days to the initial date to get the end date.

Calculate the number of holidays in the range ===> Days

While there are days

If it's a workday

diminish the day counter by one

Move the end date on day forward.

This improved algorithm is

**150 times faster**than the original for 630 hours, 5 hours per day (or 126 days)
## Comments

## Post a Comment