Spaces:
Sleeping
Sleeping
| import Foundation | |
| extension DispatchTime { | |
| /// Nicely format elapsed time | |
| func timeElapsedPretty() -> String { | |
| let seconds = Double((DispatchTime.now().uptimeNanoseconds - uptimeNanoseconds)) / 1_000_000_000 | |
| return seconds.asSecondsPrettyPrint | |
| } | |
| } | |
| extension Double { | |
| var asSecondsPrettyPrint: String { | |
| let milliseconds = self * 1000 | |
| let seconds = self | |
| let minutes = self / 60 | |
| let hours = self / 3600 | |
| if milliseconds < 5 { | |
| return "\(milliseconds.round(digits: 2))ms" | |
| } | |
| if milliseconds < 20 { | |
| return "\(milliseconds.round(digits: 1))ms" | |
| } | |
| if milliseconds < 800 { | |
| return "\(Int(milliseconds.round(digits: 0)))ms" | |
| } | |
| if milliseconds < 5_000 { | |
| return "\(seconds.round(digits: 2))s" | |
| } | |
| if milliseconds < 20_000 { | |
| return "\(seconds.round(digits: 1))s" | |
| } | |
| if milliseconds < 180_000 { | |
| return "\(Int(seconds.round(digits: 0)))s" | |
| } | |
| if milliseconds < 1000 * 60 * 90 { | |
| return "\(Int(minutes.round(digits: 0)))m" | |
| } | |
| return "\(Int(hours).zeroPadded(len: 2)):\((Int(minutes) % 60).zeroPadded(len: 2))" | |
| } | |
| } | |