print nushell startup time (#7831)

# Description

This PR shows the startup time and decreases the banner. This startup
time output can be disabled with the `show_banner: false` setting in the
config. This is the startup in debug mode.

![image](https://user-images.githubusercontent.com/343840/213955410-f319f8d4-1f96-47ae-8366-1c564a08d3e4.png)

On my mac in release mode
```
Startup Time: 368ms 429µs 83ns
```
On my mac without a config as `nu --config foo --env-config foo`
```
Startup Time: 11ms 663µs 791ns
```

I could really go either way on this. If people don't like this change,
we don't have to merge it.

# User-Facing Changes

Startup Time

# Tests + Formatting

Don't forget to add tests that cover your changes.

Make sure you've run and fixed any issues with these commands:

- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect` to check that you're using the standard code
style
- `cargo test --workspace` to check that all tests pass

# After Submitting

If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.
This commit is contained in:
Darren Schroeder
2023-01-23 12:57:40 -06:00
committed by GitHub
parent 4bac90a3b2
commit ef660be285
6 changed files with 63 additions and 78 deletions

View File

@ -41,6 +41,7 @@ pub fn evaluate_repl(
stack: &mut Stack,
nushell_path: &str,
prerun_command: Option<Spanned<String>>,
start_time: Instant,
) -> Result<()> {
use reedline::{FileBackedHistory, Reedline, Signal};
@ -307,6 +308,13 @@ pub fn evaluate_repl(
column!()
);
if entry_num == 1 && show_banner {
println!(
"Startup Time: {}",
format_duration(start_time.elapsed().as_nanos() as i64)
);
}
let input = line_editor.read_line(prompt);
let shell_integration = config.shell_integration;
@ -578,15 +586,7 @@ Our {}Documentation{} is located at {}http://nushell.sh{}
{}Tweet{} us at {}@nu_shell{}
It's been this long since {}Nushell{}'s first commit:
{}
{}You can disable this banner using the {}config nu{}{} command
to modify the config.nu file and setting show_banner to false.
let-env config = {{
show_banner: false
...
}}{}
{}{}
"#,
"\x1b[32m", //start line 1 green
"\x1b[32m", //start line 2
@ -618,11 +618,7 @@ let-env config = {{
"\x1b[32m", //before Nushell
"\x1b[0m", //after Nushell
age,
"\x1b[2;37m", //before banner disable dim white
"\x1b[2;36m", //before config nu dim cyan
"\x1b[0m", //after config nu
"\x1b[2;37m", //after config nu dim white
"\x1b[0m", //after banner disable
"\x1b[0m", //after banner disable
);
banner