import { debug } from "builder-util"
export interface Timer {
end(): void
}
export class DevTimer implements Timer {
private start = process.hrtime()
constructor(private readonly label: string) {}
endAndGet(): string {
const end = process.hrtime(this.start)
return `${end[0]}s ${Math.round(end[1] / 1000000)}ms`
}
end(): void {
console.info(`${this.label}: ${this.endAndGet()}`)
}
}
class ProductionTimer implements Timer {
end(): void {
}
}
export function time(label: string): Timer {
return debug.enabled ? new DevTimer(label) : new ProductionTimer()
}