🏁 Datezone vs Date-fns Performance Comparison

Generated: 2025-07-18T11:30:21.757Z
Node.js: v24.3.0
Platform: darwin arm64

📊 Performance Overview

This report compares Datezone against Date-fns v4 with timeZone support (@date-fns/tz).

🏆 Performance Legend

IconMeaningImprovement
🚀Datezone dominates>100% faster
Datezone wins25-100% faster
Datezone leads10-25% faster
🤝Close match<10% difference
⚠️Date-fns leads10-25% faster
🐌Date-fns wins>25% faster

Day (DST)

OperationDatezoneDate-fnsPerformance
addDaysaddDays2.0M ops/secaddDays100.0K ops/sec🚀 +1890%
startOfDaystartOfDay1.5M ops/secstartOfDay106.6K ops/sec🚀 +1266%
endOfDayendOfDay1.4M ops/secendOfDay108.1K ops/sec🚀 +1237%
dayOfWeekdayOfWeek1.4M ops/secdayOfWeek169.2K ops/sec🚀 +751%
dayOfYeardayOfYear9.5M ops/secdayOfYear22.5K ops/sec🚀 +42010%

Day (Local)

OperationDatezoneDate-fnsPerformance
addDaysaddDays7.2M ops/secaddDays15.4M ops/sec🐌 -53%
startOfDaystartOfDay14.9M ops/secstartOfDay14.8M ops/sec🤝
endOfDayendOfDay13.9M ops/secendOfDay14.5M ops/sec🤝
dayOfWeekdayOfWeek27.6M ops/secdayOfWeek26.5M ops/sec🤝
dayOfYeardayOfYear8.4M ops/secdayOfYear559.5K ops/sec🚀 +1410%

Day (Non-DST)

OperationDatezoneDate-fnsPerformance
addDaysaddDays77.8M ops/secaddDays117.5K ops/sec🚀 +66105%
startOfDaystartOfDay5.4M ops/secstartOfDay127.1K ops/sec🚀 +4115%
endOfDayendOfDay10.9M ops/secendOfDay127.0K ops/sec🚀 +8487%
dayOfWeekdayOfWeek23.7M ops/secdayOfWeek203.6K ops/sec🚀 +11542%
dayOfYeardayOfYear12.8M ops/secdayOfYear26.9K ops/sec🚀 +47665%

Day (UTC)

OperationDatezoneDate-fnsPerformance
addDaysaddDays36.3M ops/secaddDays141.1K ops/sec🚀 +25659%
startOfDaystartOfDay9.6M ops/secstartOfDay155.6K ops/sec🚀 +6096%
endOfDayendOfDay9.0M ops/secendOfDay155.7K ops/sec🚀 +5685%
dayOfWeekdayOfWeek19.0M ops/secdayOfWeek253.5K ops/sec🚀 +7404%
dayOfYeardayOfYear9.8M ops/secdayOfYear32.8K ops/sec🚀 +29679%

Duration (DST)

OperationDatezoneDate-fnsPerformance
intervalToDurationintervalToDuration1.2M ops/secintervalToDuration30.3K ops/sec🚀 +3807%

Duration (Local)

OperationDatezoneDate-fnsPerformance
intervalToDurationintervalToDuration5.6M ops/secintervalToDuration693.3K ops/sec🚀 +708%

Duration (Non-DST)

OperationDatezoneDate-fnsPerformance
intervalToDurationintervalToDuration3.7M ops/secintervalToDuration35.8K ops/sec🚀 +10147%

Duration (UTC)

OperationDatezoneDate-fnsPerformance
intervalToDurationintervalToDuration5.2M ops/secintervalToDuration43.1K ops/sec🚀 +12039%

Format (DST)

OperationDatezoneDate-fnsPerformance
formatformat513.8K ops/secformat71.4K ops/sec🚀 +620%

Format (Local)

OperationDatezoneDate-fnsPerformance
formatformat614.9K ops/secformat210.0K ops/sec🚀 +193%

Format (Non-DST)

OperationDatezoneDate-fnsPerformance
formatformat561.5K ops/secformat77.4K ops/sec🚀 +625%

Format (UTC)

OperationDatezoneDate-fnsPerformance
formatformat701.0K ops/secformat86.7K ops/sec🚀 +709%

Format-duration (DST)

OperationDatezoneDate-fnsPerformance
formatDurationformatDuration411.4K ops/secformatDuration516.3K ops/sec⚠️ -20%
formatDuration complexformatDuration complex184.6K ops/secformatDuration complex380.3K ops/sec🐌 -51%
formatDuration zero valuesformatDuration zero values500.5K ops/secformatDuration zero values497.8K ops/sec🤝

Format-duration (Local)

OperationDatezoneDate-fnsPerformance
formatDurationformatDuration9.4M ops/secformatDuration498.6K ops/sec🚀 +1787%
formatDuration complexformatDuration complex4.0M ops/secformatDuration complex402.6K ops/sec🚀 +884%
formatDuration with localeformatDuration with locale9.1M ops/secformatDuration with locale507.3K ops/sec🚀 +1684%

Format-duration (Non-DST)

OperationDatezoneDate-fnsPerformance
formatDurationformatDuration523.1K ops/secformatDuration499.1K ops/sec🤝
formatDuration complexformatDuration complex222.8K ops/secformatDuration complex375.7K ops/sec🐌 -41%
formatDuration with delimiterformatDuration with delimiter613.2K ops/secformatDuration with delimiter512.2K ops/sec+20%

Format-duration (UTC)

OperationDatezoneDate-fnsPerformance
formatDurationformatDuration8.5M ops/secformatDuration506.3K ops/sec🚀 +1585%
formatDuration complexformatDuration complex3.8M ops/secformatDuration complex407.6K ops/sec🚀 +840%
formatDuration custom formatformatDuration custom format9.2M ops/secformatDuration custom format856.6K ops/sec🚀 +974%

Hour (DST)

OperationDatezoneDate-fnsPerformance
hourhour8.0M ops/sechour280.5K ops/sec🚀 +2757%
addHoursaddHours5081.9M ops/secaddHours108.3K ops/sec🚀 +4690406%

Hour (Local)

OperationDatezoneDate-fnsPerformance
hourhour12.1M ops/sechour36.3M ops/sec🐌 -67%
addHoursaddHours2727.8M ops/secaddHours8.0M ops/sec🚀 +34191%

Hour (Non-DST)

OperationDatezoneDate-fnsPerformance
hourhour9.3M ops/sechour372.9K ops/sec🚀 +2381%
addHoursaddHours5088.1M ops/secaddHours135.6K ops/sec🚀 +3752980%

Hour (UTC)

OperationDatezoneDate-fnsPerformance
hourhour220.8M ops/sechour373.4K ops/sec🚀 +59029%
addHoursaddHours5115.9M ops/secaddHours163.3K ops/sec🚀 +3133484%

Iso (DST)

OperationDatezoneDate-fnsPerformance
toISOStringtoISOString1.6M ops/sectoISOString118.9K ops/sec🚀 +1282%
fromISOStringfromISOString32.1M ops/secfromISOString844.9K ops/sec🚀 +3699%

Iso (Local)

OperationDatezoneDate-fnsPerformance
toISOStringtoISOString2.6M ops/sectoISOString1.7M ops/sec+47%
fromISOStringfromISOString32.3M ops/secfromISOString694.0K ops/sec🚀 +4559%

Iso (Non-DST)

OperationDatezoneDate-fnsPerformance
toISOStringtoISOString2.0M ops/sectoISOString129.8K ops/sec🚀 +1412%
fromISOStringfromISOString33.3M ops/secfromISOString858.0K ops/sec🚀 +3779%

Iso (UTC)

OperationDatezoneDate-fnsPerformance
toISOStringtoISOString7.1M ops/sectoISOString175.9K ops/sec🚀 +3926%
fromISOStringfromISOString34.2M ops/secfromISOString858.9K ops/sec🚀 +3877%

Month (DST)

OperationDatezoneDate-fnsPerformance
addMonthsaddMonths1.0M ops/secaddMonths60.2K ops/sec🚀 +1581%
startOfMonthstartOfMonth1.6M ops/secstartOfMonth77.8K ops/sec🚀 +1980%
endOfMonthendOfMonth1.6M ops/secendOfMonth77.0K ops/sec🚀 +1914%
daysInMonthdaysInMonth10.8M ops/secdaysInMonth60.4K ops/sec🚀 +17837%

Month (Local)

OperationDatezoneDate-fnsPerformance
addMonthsaddMonths3.1M ops/secaddMonths2.7M ops/sec+16%
startOfMonthstartOfMonth3.7M ops/secstartOfMonth3.7M ops/sec🤝
endOfMonthendOfMonth5.2M ops/secendOfMonth5.0M ops/sec🤝
daysInMonthdaysInMonth29.5M ops/secdaysInMonth2.6M ops/sec🚀 +1013%

Month (Non-DST)

OperationDatezoneDate-fnsPerformance
addMonthsaddMonths4.2M ops/secaddMonths69.5K ops/sec🚀 +5889%
startOfMonthstartOfMonth7.1M ops/secstartOfMonth89.8K ops/sec🚀 +7781%
endOfMonthendOfMonth6.8M ops/secendOfMonth91.7K ops/sec🚀 +7274%
daysInMonthdaysInMonth15.2M ops/secdaysInMonth73.1K ops/sec🚀 +20744%

Month (UTC)

OperationDatezoneDate-fnsPerformance
addMonthsaddMonths5.4M ops/secaddMonths82.1K ops/sec🚀 +6434%
startOfMonthstartOfMonth6.5M ops/secstartOfMonth108.9K ops/sec🚀 +5835%
endOfMonthendOfMonth6.2M ops/secendOfMonth107.0K ops/sec🚀 +5657%
daysInMonthdaysInMonth12.7M ops/secdaysInMonth87.1K ops/sec🚀 +14510%

Week (DST)

OperationDatezoneDate-fnsPerformance
addWeeksaddWeeks1.2M ops/secaddWeeks101.4K ops/sec🚀 +1061%
startOfWeekstartOfWeek1.5M ops/secstartOfWeek77.0K ops/sec🚀 +1823%
endOfWeekendOfWeek1.6M ops/secendOfWeek78.8K ops/sec🚀 +1944%

Week (Local)

OperationDatezoneDate-fnsPerformance
addWeeksaddWeeks6636.4M ops/secaddWeeks6.0M ops/sec🚀 +110831%
startOfWeekstartOfWeek3.2M ops/secstartOfWeek3.0M ops/sec🤝
endOfWeekendOfWeek6.5M ops/secendOfWeek5.5M ops/sec+18%

Week (Non-DST)

OperationDatezoneDate-fnsPerformance
addWeeksaddWeeks4.9M ops/secaddWeeks116.6K ops/sec🚀 +4139%
startOfWeekstartOfWeek7.8M ops/secstartOfWeek89.8K ops/sec🚀 +8539%
endOfWeekendOfWeek7.5M ops/secendOfWeek92.1K ops/sec🚀 +8081%

Week (UTC)

OperationDatezoneDate-fnsPerformance
addWeeksaddWeeks6.1M ops/secaddWeeks136.5K ops/sec🚀 +4384%
startOfWeekstartOfWeek6.1M ops/secstartOfWeek105.3K ops/sec🚀 +5691%
endOfWeekendOfWeek5.9M ops/secendOfWeek110.0K ops/sec🚀 +5301%

Year (DST)

OperationDatezoneDate-fnsPerformance
addYearsaddYears4.6M ops/secaddYears59.9K ops/sec🚀 +7526%
startOfYearstartOfYear1.5M ops/secstartOfYear74.7K ops/sec🚀 +1944%
endOfYearendOfYear1.2M ops/secendOfYear74.3K ops/sec🚀 +1515%
yearyear17.4M ops/secyear353.3K ops/sec🚀 +4825%

Year (Local)

OperationDatezoneDate-fnsPerformance
addYearsaddYears3.1M ops/secaddYears2.8M ops/sec+12%
startOfYearstartOfYear9.5M ops/secstartOfYear3.5M ops/sec🚀 +168%
endOfYearendOfYear9.3M ops/secendOfYear3.6M ops/sec🚀 +160%
yearyear28.0M ops/secyear29.1M ops/sec🤝

Year (Non-DST)

OperationDatezoneDate-fnsPerformance
addYearsaddYears5.1M ops/secaddYears69.5K ops/sec🚀 +7204%
startOfYearstartOfYear8.0M ops/secstartOfYear90.2K ops/sec🚀 +8772%
endOfYearendOfYear7.9M ops/secendOfYear89.6K ops/sec🚀 +8726%
yearyear23.7M ops/secyear423.0K ops/sec🚀 +5497%

Year (UTC)

OperationDatezoneDate-fnsPerformance
addYearsaddYears8.3M ops/secaddYears81.0K ops/sec🚀 +10094%
startOfYearstartOfYear7.8M ops/secstartOfYear107.1K ops/sec🚀 +7218%
endOfYearendOfYear7.8M ops/secendOfYear107.5K ops/sec🚀 +7140%
yearyear19.3M ops/secyear530.5K ops/sec🚀 +3537%

📈 Summary

MetricCountPercentage
Datezone wins8686.0%
Date-fns wins55.0%
Close matches99.0%

🔬 Methodology

Benchmark Setup

  • Tool: Mitata - High-precision JavaScript benchmarking
  • Iterations: Multiple samples with statistical significance testing
  • Environment: Node.js v24.3.0 on darwin arm64

Comparison Approach

  • Datezone: Built-in timeZone support with UTC timestamps
  • Date-fns: v4.x with @date-fns/tz package for timeZone operations
  • Test Data: Realistic timestamps across different times and timezones
  • Fairness: Both libraries tested with equivalent timeZone-aware operations

Performance Metrics

  • Time (avg): Average execution time per operation
  • Operations/sec: Throughput (higher = better)
  • Comparison: Based on operations per second difference

Test Categories

  • Local: Standard local time operations
  • UTC: Optimized UTC timeZone operations
  • Non-DST: Fixed offset timeZones (fastest timeZone path)
  • DST: Complex DST-aware timeZone operations

Notes

  • Results may vary based on system specifications and load
  • Benchmarks focus on equivalent functionality where available
  • Some operations are unique to Datezone (timeZone utilities)
  • All operations tested with timeZone awareness for fair comparison
  • Non-DST timeZones should show the best performance for timeZone-aware operations

🛠️ How to Regenerate This Report

To regenerate this comparison report, run:

bun run bench --json
bun run tools/benchmark/create-comparison-report.ts

This will update tools/benchmark/reports/comparison-report.md.