🏁 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
Icon | Meaning | Improvement |
---|---|---|
🚀 | Datezone dominates | >100% faster |
⚡ | Datezone wins | 25-100% faster |
✅ | Datezone leads | 10-25% faster |
🤝 | Close match | <10% difference |
⚠️ | Date-fns leads | 10-25% faster |
🐌 | Date-fns wins | >25% faster |
Day (DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addDays | addDays2.0M ops/sec | addDays100.0K ops/sec | 🚀 +1890% |
startOfDay | startOfDay1.5M ops/sec | startOfDay106.6K ops/sec | 🚀 +1266% |
endOfDay | endOfDay1.4M ops/sec | endOfDay108.1K ops/sec | 🚀 +1237% |
dayOfWeek | dayOfWeek1.4M ops/sec | dayOfWeek169.2K ops/sec | 🚀 +751% |
dayOfYear | dayOfYear9.5M ops/sec | dayOfYear22.5K ops/sec | 🚀 +42010% |
Day (Local)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addDays | addDays7.2M ops/sec | addDays15.4M ops/sec | 🐌 -53% |
startOfDay | startOfDay14.9M ops/sec | startOfDay14.8M ops/sec | 🤝 |
endOfDay | endOfDay13.9M ops/sec | endOfDay14.5M ops/sec | 🤝 |
dayOfWeek | dayOfWeek27.6M ops/sec | dayOfWeek26.5M ops/sec | 🤝 |
dayOfYear | dayOfYear8.4M ops/sec | dayOfYear559.5K ops/sec | 🚀 +1410% |
Day (Non-DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addDays | addDays77.8M ops/sec | addDays117.5K ops/sec | 🚀 +66105% |
startOfDay | startOfDay5.4M ops/sec | startOfDay127.1K ops/sec | 🚀 +4115% |
endOfDay | endOfDay10.9M ops/sec | endOfDay127.0K ops/sec | 🚀 +8487% |
dayOfWeek | dayOfWeek23.7M ops/sec | dayOfWeek203.6K ops/sec | 🚀 +11542% |
dayOfYear | dayOfYear12.8M ops/sec | dayOfYear26.9K ops/sec | 🚀 +47665% |
Day (UTC)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addDays | addDays36.3M ops/sec | addDays141.1K ops/sec | 🚀 +25659% |
startOfDay | startOfDay9.6M ops/sec | startOfDay155.6K ops/sec | 🚀 +6096% |
endOfDay | endOfDay9.0M ops/sec | endOfDay155.7K ops/sec | 🚀 +5685% |
dayOfWeek | dayOfWeek19.0M ops/sec | dayOfWeek253.5K ops/sec | 🚀 +7404% |
dayOfYear | dayOfYear9.8M ops/sec | dayOfYear32.8K ops/sec | 🚀 +29679% |
Duration (DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
intervalToDuration | intervalToDuration1.2M ops/sec | intervalToDuration30.3K ops/sec | 🚀 +3807% |
Duration (Local)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
intervalToDuration | intervalToDuration5.6M ops/sec | intervalToDuration693.3K ops/sec | 🚀 +708% |
Duration (Non-DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
intervalToDuration | intervalToDuration3.7M ops/sec | intervalToDuration35.8K ops/sec | 🚀 +10147% |
Duration (UTC)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
intervalToDuration | intervalToDuration5.2M ops/sec | intervalToDuration43.1K ops/sec | 🚀 +12039% |
Format (DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
format | format513.8K ops/sec | format71.4K ops/sec | 🚀 +620% |
Format (Local)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
format | format614.9K ops/sec | format210.0K ops/sec | 🚀 +193% |
Format (Non-DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
format | format561.5K ops/sec | format77.4K ops/sec | 🚀 +625% |
Format (UTC)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
format | format701.0K ops/sec | format86.7K ops/sec | 🚀 +709% |
Format-duration (DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
formatDuration | formatDuration411.4K ops/sec | formatDuration516.3K ops/sec | ⚠️ -20% |
formatDuration complex | formatDuration complex184.6K ops/sec | formatDuration complex380.3K ops/sec | 🐌 -51% |
formatDuration zero values | formatDuration zero values500.5K ops/sec | formatDuration zero values497.8K ops/sec | 🤝 |
Format-duration (Local)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
formatDuration | formatDuration9.4M ops/sec | formatDuration498.6K ops/sec | 🚀 +1787% |
formatDuration complex | formatDuration complex4.0M ops/sec | formatDuration complex402.6K ops/sec | 🚀 +884% |
formatDuration with locale | formatDuration with locale9.1M ops/sec | formatDuration with locale507.3K ops/sec | 🚀 +1684% |
Format-duration (Non-DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
formatDuration | formatDuration523.1K ops/sec | formatDuration499.1K ops/sec | 🤝 |
formatDuration complex | formatDuration complex222.8K ops/sec | formatDuration complex375.7K ops/sec | 🐌 -41% |
formatDuration with delimiter | formatDuration with delimiter613.2K ops/sec | formatDuration with delimiter512.2K ops/sec | ✅ +20% |
Format-duration (UTC)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
formatDuration | formatDuration8.5M ops/sec | formatDuration506.3K ops/sec | 🚀 +1585% |
formatDuration complex | formatDuration complex3.8M ops/sec | formatDuration complex407.6K ops/sec | 🚀 +840% |
formatDuration custom format | formatDuration custom format9.2M ops/sec | formatDuration custom format856.6K ops/sec | 🚀 +974% |
Hour (DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
hour | hour8.0M ops/sec | hour280.5K ops/sec | 🚀 +2757% |
addHours | addHours5081.9M ops/sec | addHours108.3K ops/sec | 🚀 +4690406% |
Hour (Local)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
hour | hour12.1M ops/sec | hour36.3M ops/sec | 🐌 -67% |
addHours | addHours2727.8M ops/sec | addHours8.0M ops/sec | 🚀 +34191% |
Hour (Non-DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
hour | hour9.3M ops/sec | hour372.9K ops/sec | 🚀 +2381% |
addHours | addHours5088.1M ops/sec | addHours135.6K ops/sec | 🚀 +3752980% |
Hour (UTC)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
hour | hour220.8M ops/sec | hour373.4K ops/sec | 🚀 +59029% |
addHours | addHours5115.9M ops/sec | addHours163.3K ops/sec | 🚀 +3133484% |
Iso (DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
toISOString | toISOString1.6M ops/sec | toISOString118.9K ops/sec | 🚀 +1282% |
fromISOString | fromISOString32.1M ops/sec | fromISOString844.9K ops/sec | 🚀 +3699% |
Iso (Local)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
toISOString | toISOString2.6M ops/sec | toISOString1.7M ops/sec | ⚡ +47% |
fromISOString | fromISOString32.3M ops/sec | fromISOString694.0K ops/sec | 🚀 +4559% |
Iso (Non-DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
toISOString | toISOString2.0M ops/sec | toISOString129.8K ops/sec | 🚀 +1412% |
fromISOString | fromISOString33.3M ops/sec | fromISOString858.0K ops/sec | 🚀 +3779% |
Iso (UTC)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
toISOString | toISOString7.1M ops/sec | toISOString175.9K ops/sec | 🚀 +3926% |
fromISOString | fromISOString34.2M ops/sec | fromISOString858.9K ops/sec | 🚀 +3877% |
Month (DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addMonths | addMonths1.0M ops/sec | addMonths60.2K ops/sec | 🚀 +1581% |
startOfMonth | startOfMonth1.6M ops/sec | startOfMonth77.8K ops/sec | 🚀 +1980% |
endOfMonth | endOfMonth1.6M ops/sec | endOfMonth77.0K ops/sec | 🚀 +1914% |
daysInMonth | daysInMonth10.8M ops/sec | daysInMonth60.4K ops/sec | 🚀 +17837% |
Month (Local)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addMonths | addMonths3.1M ops/sec | addMonths2.7M ops/sec | ✅ +16% |
startOfMonth | startOfMonth3.7M ops/sec | startOfMonth3.7M ops/sec | 🤝 |
endOfMonth | endOfMonth5.2M ops/sec | endOfMonth5.0M ops/sec | 🤝 |
daysInMonth | daysInMonth29.5M ops/sec | daysInMonth2.6M ops/sec | 🚀 +1013% |
Month (Non-DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addMonths | addMonths4.2M ops/sec | addMonths69.5K ops/sec | 🚀 +5889% |
startOfMonth | startOfMonth7.1M ops/sec | startOfMonth89.8K ops/sec | 🚀 +7781% |
endOfMonth | endOfMonth6.8M ops/sec | endOfMonth91.7K ops/sec | 🚀 +7274% |
daysInMonth | daysInMonth15.2M ops/sec | daysInMonth73.1K ops/sec | 🚀 +20744% |
Month (UTC)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addMonths | addMonths5.4M ops/sec | addMonths82.1K ops/sec | 🚀 +6434% |
startOfMonth | startOfMonth6.5M ops/sec | startOfMonth108.9K ops/sec | 🚀 +5835% |
endOfMonth | endOfMonth6.2M ops/sec | endOfMonth107.0K ops/sec | 🚀 +5657% |
daysInMonth | daysInMonth12.7M ops/sec | daysInMonth87.1K ops/sec | 🚀 +14510% |
Week (DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addWeeks | addWeeks1.2M ops/sec | addWeeks101.4K ops/sec | 🚀 +1061% |
startOfWeek | startOfWeek1.5M ops/sec | startOfWeek77.0K ops/sec | 🚀 +1823% |
endOfWeek | endOfWeek1.6M ops/sec | endOfWeek78.8K ops/sec | 🚀 +1944% |
Week (Local)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addWeeks | addWeeks6636.4M ops/sec | addWeeks6.0M ops/sec | 🚀 +110831% |
startOfWeek | startOfWeek3.2M ops/sec | startOfWeek3.0M ops/sec | 🤝 |
endOfWeek | endOfWeek6.5M ops/sec | endOfWeek5.5M ops/sec | ✅ +18% |
Week (Non-DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addWeeks | addWeeks4.9M ops/sec | addWeeks116.6K ops/sec | 🚀 +4139% |
startOfWeek | startOfWeek7.8M ops/sec | startOfWeek89.8K ops/sec | 🚀 +8539% |
endOfWeek | endOfWeek7.5M ops/sec | endOfWeek92.1K ops/sec | 🚀 +8081% |
Week (UTC)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addWeeks | addWeeks6.1M ops/sec | addWeeks136.5K ops/sec | 🚀 +4384% |
startOfWeek | startOfWeek6.1M ops/sec | startOfWeek105.3K ops/sec | 🚀 +5691% |
endOfWeek | endOfWeek5.9M ops/sec | endOfWeek110.0K ops/sec | 🚀 +5301% |
Year (DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addYears | addYears4.6M ops/sec | addYears59.9K ops/sec | 🚀 +7526% |
startOfYear | startOfYear1.5M ops/sec | startOfYear74.7K ops/sec | 🚀 +1944% |
endOfYear | endOfYear1.2M ops/sec | endOfYear74.3K ops/sec | 🚀 +1515% |
year | year17.4M ops/sec | year353.3K ops/sec | 🚀 +4825% |
Year (Local)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addYears | addYears3.1M ops/sec | addYears2.8M ops/sec | ✅ +12% |
startOfYear | startOfYear9.5M ops/sec | startOfYear3.5M ops/sec | 🚀 +168% |
endOfYear | endOfYear9.3M ops/sec | endOfYear3.6M ops/sec | 🚀 +160% |
year | year28.0M ops/sec | year29.1M ops/sec | 🤝 |
Year (Non-DST)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addYears | addYears5.1M ops/sec | addYears69.5K ops/sec | 🚀 +7204% |
startOfYear | startOfYear8.0M ops/sec | startOfYear90.2K ops/sec | 🚀 +8772% |
endOfYear | endOfYear7.9M ops/sec | endOfYear89.6K ops/sec | 🚀 +8726% |
year | year23.7M ops/sec | year423.0K ops/sec | 🚀 +5497% |
Year (UTC)
Operation | Datezone | Date-fns | Performance |
---|---|---|---|
addYears | addYears8.3M ops/sec | addYears81.0K ops/sec | 🚀 +10094% |
startOfYear | startOfYear7.8M ops/sec | startOfYear107.1K ops/sec | 🚀 +7218% |
endOfYear | endOfYear7.8M ops/sec | endOfYear107.5K ops/sec | 🚀 +7140% |
year | year19.3M ops/sec | year530.5K ops/sec | 🚀 +3537% |
📈 Summary
Metric | Count | Percentage |
---|---|---|
Datezone wins | 86 | 86.0% |
Date-fns wins | 5 | 5.0% |
Close matches | 9 | 9.0% |
🔬 Methodology
Benchmark Setup
- Tool: Mitata - High-precision JavaScript benchmarking
- Iterations: Multiple samples with statistical significance testing
- Environment: Node.js
v24.3.0
ondarwin 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:
This will update tools/benchmark/reports/comparison-report.md
.