https://github.com/legend80s/instant-rs
A better `console.time`.
https://github.com/legend80s/instant-rs
Last synced: 3 months ago
JSON representation
A better `console.time`.
- Host: GitHub
- URL: https://github.com/legend80s/instant-rs
- Owner: legend80s
- License: mit
- Created: 2024-04-10T10:01:47.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-04-11T02:29:55.000Z (about 1 year ago)
- Last Synced: 2025-02-17T20:41:52.876Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 18.6 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# instant-rs
> A better `console.time`.
>
> 💰 Time is money, a very tiny library to convert time costs of your program to a **human readable** format use [pretty-ms](https://www.npmjs.com/package/pretty-ms) and designed in a **good-DX API style like Rust's** 🦀 `instant.elapsed`.## Usage
```js
import Instant from 'instant-rs'// Mark beginning time
const now = Instant.now();await doSthExpensive()
// Show time costs
console.log("time costs", now.elapsed());
````elapsed()` will return the time costs of `doSthExpensive()` in a readable string format.
```js
1337000000 => 'time costs 15d 11h 23m 20s'
1337 => 'time costs 1.3s'
133 => 'time costs 133ms'
```## The `console.time` Problem
In JavaScript:
```js
console.time('time costs')
await sleep(10) // 10ms 100ms 1000ms
console.timeEnd('time costs')// Output:
// time costs: 11.322021484375 ms 😀
// time costs: 1001.489990234375 ms 🤔
// time costs: 100102.08911132812 ms 😡
```While in Rust, time costs is more readable and the API is easier to use and the code is more DRY because we don't need to write label twice:
```rust
use std::time::{Duration, Instant};
use std::thread::sleep;fn main() {
let now = Instant::now();
sleep(Duration::from_millis(10)); // 10ms 100ms 1000ms
println!("time costs {:?}", now.elapsed());
}// Output:
// time costs 10.07827ms // 10 ms 😀
// time costs 100.077897ms // 100 ms 😊
// time costs 1.000184719s // 1000 ms 😋
// time costs 10.000086342s // 10_000 ms 😇
```That's why I wrote this package.
## API
### elapsed
```typescript
function elapsed(options?: IOptions)
```Support all options of pretty-ms https://www.npmjs.com/package/pretty-ms#api.
for example time cost is `1234ms`:
```js
// `compact` option
now.elapsed({ compact: true });
//=> '1s'// `verbose` option
now.elapsed({ compact: true });
//=> '1.2 seconds'
```### now
```typescript
function now(): Instant
```