mirror of
https://github.com/nushell/nushell
synced 2025-01-16 07:04:09 +00:00
Box ImportPattern
in Expr
(#12568)
# Description Adds a `Box` around the `ImportPattern` in `Expr` which decreases the size of `Expr` from 152 to 64 bytes (and `Expression` from 216 to 128 bytes). This seems to speed up parsing a little bit according to the benchmarks (main is top, PR is bottom): ``` benchmarks fastest │ slowest │ median │ mean │ samples │ iters benchmarks fastest │ slowest │ median │ mean │ samples │ iters ├─ parser_benchmarks │ │ │ │ │ ├─ parser_benchmarks │ │ │ │ │ │ ├─ parse_default_config_file 2.287 ms │ 4.532 ms │ 2.311 ms │ 2.437 ms │ 100 │ 100 │ ├─ parse_default_config_file 2.255 ms │ 2.781 ms │ 2.281 ms │ 2.312 ms │ 100 │ 100 │ ╰─ parse_default_env_file 421.8 µs │ 824.6 µs │ 494.3 µs │ 527.5 µs │ 100 │ 100 │ ╰─ parse_default_env_file 402 µs │ 486.6 µs │ 414.8 µs │ 416.2 µs │ 100 │ 100 ```
This commit is contained in:
parent
b088f395dc
commit
9a265847e2
4 changed files with 7 additions and 7 deletions
|
@ -2431,7 +2431,7 @@ pub fn parse_use(
|
||||||
|
|
||||||
// Create a new Use command call to pass the import pattern as parser info
|
// Create a new Use command call to pass the import pattern as parser info
|
||||||
let import_pattern_expr = Expression {
|
let import_pattern_expr = Expression {
|
||||||
expr: Expr::ImportPattern(import_pattern),
|
expr: Expr::ImportPattern(Box::new(import_pattern)),
|
||||||
span: span(args_spans),
|
span: span(args_spans),
|
||||||
ty: Type::Any,
|
ty: Type::Any,
|
||||||
custom_completion: None,
|
custom_completion: None,
|
||||||
|
@ -2615,7 +2615,7 @@ pub fn parse_hide(working_set: &mut StateWorkingSet, lite_command: &LiteCommand)
|
||||||
|
|
||||||
// Create a new Use command call to pass the new import pattern
|
// Create a new Use command call to pass the new import pattern
|
||||||
let import_pattern_expr = Expression {
|
let import_pattern_expr = Expression {
|
||||||
expr: Expr::ImportPattern(import_pattern),
|
expr: Expr::ImportPattern(Box::new(import_pattern)),
|
||||||
span: span(args_spans),
|
span: span(args_spans),
|
||||||
ty: Type::Any,
|
ty: Type::Any,
|
||||||
custom_completion: None,
|
custom_completion: None,
|
||||||
|
|
|
@ -2782,7 +2782,7 @@ pub fn parse_import_pattern(working_set: &mut StateWorkingSet, spans: &[Span]) -
|
||||||
prev_span,
|
prev_span,
|
||||||
));
|
));
|
||||||
return Expression {
|
return Expression {
|
||||||
expr: Expr::ImportPattern(import_pattern),
|
expr: Expr::ImportPattern(Box::new(import_pattern)),
|
||||||
span: prev_span,
|
span: prev_span,
|
||||||
ty: Type::List(Box::new(Type::String)),
|
ty: Type::List(Box::new(Type::String)),
|
||||||
custom_completion: None,
|
custom_completion: None,
|
||||||
|
@ -2828,7 +2828,7 @@ pub fn parse_import_pattern(working_set: &mut StateWorkingSet, spans: &[Span]) -
|
||||||
} else {
|
} else {
|
||||||
working_set.error(ParseError::ExportNotFound(result.span));
|
working_set.error(ParseError::ExportNotFound(result.span));
|
||||||
return Expression {
|
return Expression {
|
||||||
expr: Expr::ImportPattern(import_pattern),
|
expr: Expr::ImportPattern(Box::new(import_pattern)),
|
||||||
span: span(spans),
|
span: span(spans),
|
||||||
ty: Type::List(Box::new(Type::String)),
|
ty: Type::List(Box::new(Type::String)),
|
||||||
custom_completion: None,
|
custom_completion: None,
|
||||||
|
@ -2848,7 +2848,7 @@ pub fn parse_import_pattern(working_set: &mut StateWorkingSet, spans: &[Span]) -
|
||||||
}
|
}
|
||||||
|
|
||||||
Expression {
|
Expression {
|
||||||
expr: Expr::ImportPattern(import_pattern),
|
expr: Expr::ImportPattern(Box::new(import_pattern)),
|
||||||
span: span(&spans[1..]),
|
span: span(&spans[1..]),
|
||||||
ty: Type::List(Box::new(Type::String)),
|
ty: Type::List(Box::new(Type::String)),
|
||||||
custom_completion: None,
|
custom_completion: None,
|
||||||
|
|
|
@ -46,7 +46,7 @@ pub enum Expr {
|
||||||
String(String),
|
String(String),
|
||||||
CellPath(CellPath),
|
CellPath(CellPath),
|
||||||
FullCellPath(Box<FullCellPath>),
|
FullCellPath(Box<FullCellPath>),
|
||||||
ImportPattern(ImportPattern),
|
ImportPattern(Box<ImportPattern>),
|
||||||
Overlay(Option<BlockId>), // block ID of the overlay's origin module
|
Overlay(Option<BlockId>), // block ID of the overlay's origin module
|
||||||
Signature(Box<Signature>),
|
Signature(Box<Signature>),
|
||||||
StringInterpolation(Vec<Expression>),
|
StringInterpolation(Vec<Expression>),
|
||||||
|
|
|
@ -110,7 +110,7 @@ impl Expression {
|
||||||
|
|
||||||
pub fn as_import_pattern(&self) -> Option<ImportPattern> {
|
pub fn as_import_pattern(&self) -> Option<ImportPattern> {
|
||||||
match &self.expr {
|
match &self.expr {
|
||||||
Expr::ImportPattern(pattern) => Some(pattern.clone()),
|
Expr::ImportPattern(pattern) => Some(*pattern.clone()),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue