mirror of
https://github.com/nushell/nushell.git
synced 2024-11-26 10:23:52 +01:00
a52386e837
# Description Our `ShellError` at the moment has a `std::mem::size_of<ShellError>` of 136 bytes (on AMD64). As a result `Value` directly storing the struct also required 136 bytes (thanks to alignment requirements). This change stores the `Value::Error` `ShellError` on the heap. Pro: - Value now needs just 80 bytes - Should be 1 cacheline less (still at least 2 cachelines) Con: - More small heap allocations when dealing with `Value::Error` - More heap fragmentation - Potential for additional required memcopies # Further code changes Includes a small refactor of `try` due to a type mismatch in its large match. # User-Facing Changes None for regular users. Plugin authors may have to update their matches on `Value` if they use `nu-protocol` Needs benchmarking to see if there is a benefit in real world workloads. **Update** small improvements in runtime for workloads with high volume of values. Significant reduction in maximum resident set size, when many values are held in memory. # Tests + Formatting |
||
---|---|---|
.. | ||
abs.rs | ||
arccos.rs | ||
arccosh.rs | ||
arcsin.rs | ||
arcsinh.rs | ||
arctan.rs | ||
arctanh.rs | ||
avg.rs | ||
ceil.rs | ||
cos.rs | ||
cosh.rs | ||
euler.rs | ||
floor.rs | ||
ln.rs | ||
log.rs | ||
math_.rs | ||
max.rs | ||
median.rs | ||
min.rs | ||
mod.rs | ||
mode.rs | ||
pi.rs | ||
product.rs | ||
reducers.rs | ||
round.rs | ||
sin.rs | ||
sinh.rs | ||
sqrt.rs | ||
stddev.rs | ||
sum.rs | ||
tan.rs | ||
tanh.rs | ||
tau.rs | ||
utils.rs | ||
variance.rs |