1
0
mirror of https://github.com/nushell/nushell.git synced 2025-04-24 05:08:29 +02:00
nushell/crates/nu-command/src
JT 6872d2ac2a
Speed up tight loop benchmarks ()
# Description

This does a few speedups for tight loops:
* Caches the DeclId for `table` so we don't look it up. This means users
can't easily replace the default one, we might want to talk about this
tradeoff. The lookup for finding `table` in a tight loop is currently
pretty heavy. Might be another way to speed this up.
* `table` no longer pre-calculates the width. Instead, it only
calculates the width when printing a table or record.
* Use more efficient way of collecting the block of each loop
* When printing output, only get the config when needed

Combined, this drops the runtime from a million loop tight iteration
from 1sec 8ms to 236ms.

# User-Facing Changes

_(List of all changes that impact the user experience here. This helps
us keep track of breaking changes.)_

# 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

> **Note**
> from `nushell` you can also use the `toolkit` as follows
> ```bash
> use toolkit.nu # or use an `env_change` hook to activate it
automatically
> toolkit check pr
> ```

# 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.
2023-03-26 06:12:57 +13:00
..
bits Box ShellError in Value::Error () 2023-03-12 09:57:27 +01:00
bytes fix: bytes length example description typo () 2023-03-21 11:41:37 -05:00
charting fix: fixed typo and improved Value TypeMismatch exceptions () 2023-03-22 09:47:40 +01:00
conversions Box ShellError in Value::Error () 2023-03-12 09:57:27 +01:00
database Add pattern matching () 2023-03-24 14:52:01 +13:00
dataframe docs: Use capital letters for CSV and JSON acronyms () 2023-03-15 21:52:13 -07:00
date Box ShellError in Value::Error () 2023-03-12 09:57:27 +01:00
debug Make timeit work with command calls () 2023-03-24 22:34:03 +13:00
deprecated Revert "Allow NU_LIBS_DIR and friends to be const" () 2023-03-17 09:33:24 -05:00
env Switch let/let-env family to init with math expressions () 2023-03-23 09:14:10 +13:00
experimental Uniformize usage() and extra_usage() message ending for commands helper. () 2023-02-28 21:33:02 -08:00
filesystem Better error message for mv when file not found () 2023-03-23 11:31:49 -07:00
filters Fix closures that use matches. Move 'collect' to core. () 2023-03-24 22:50:23 +13:00
formats Add pattern matching () 2023-03-24 14:52:01 +13:00
generators Document and critically review ShellError variants - Ep. 2 () 2023-03-06 11:31:07 +01:00
hash Box ShellError in Value::Error () 2023-03-12 09:57:27 +01:00
math Box ShellError in Value::Error () 2023-03-12 09:57:27 +01:00
misc Uniformize usage() and extra_usage() message ending for commands helper. () 2023-02-28 21:33:02 -08:00
network Make HTTP requests cancellable when trying to connect () 2023-03-24 12:45:55 -07:00
path Box ShellError in Value::Error () 2023-03-12 09:57:27 +01:00
platform Box ShellError in Value::Error () 2023-03-12 09:57:27 +01:00
random Document and critically review ShellError variants - Ep. 3 () 2023-03-06 18:33:09 +01:00
shells Document and critically review ShellError variants - Ep. 3 () 2023-03-06 18:33:09 +01:00
strings Decode and Encode hex () 2023-03-24 12:25:26 +01:00
system feat: add a command_not_found hook () 2023-03-20 17:05:22 +13:00
viewers Speed up tight loop benchmarks () 2023-03-26 06:12:57 +13:00
default_context.rs Speed up tight loop benchmarks () 2023-03-26 06:12:57 +13:00
example_test.rs cratification: Example support () 2023-02-27 13:58:56 -08:00
hook.rs Move variables to var stack () 2023-03-25 12:56:45 +13:00
input_handler.rs Box ShellError in Value::Error () 2023-03-12 09:57:27 +01:00
lib.rs feat: add a command_not_found hook () 2023-03-20 17:05:22 +13:00
progress_bar.rs cp progress bar implementation () 2023-02-22 11:57:38 -08:00
sort_utils.rs Document and critically review ShellError variants - Ep. 3 () 2023-03-06 18:33:09 +01:00
util.rs feat: add a command_not_found hook () 2023-03-20 17:05:22 +13:00