diff options
author | Daniel Mueller <deso@posteo.net> | 2019-01-07 13:59:08 -0800 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2019-01-07 13:59:08 -0800 |
commit | 9a951f64992af28458da15590ca99456b3d36cbc (patch) | |
tree | a5272fde422279355ffccc51cb2c0e19c097e62b | |
parent | 790e84091e10d52d2dd33aab7400b5d6345200a7 (diff) | |
download | nitrocli-9a951f64992af28458da15590ca99456b3d36cbc.tar.gz nitrocli-9a951f64992af28458da15590ca99456b3d36cbc.tar.bz2 |
Switch to using the system allocator
In the past we have already taken a couple of steps to reduce the size
of the final binary, arguing that binary size is the metric of most
relevance for the program at hand:
- the memory footprint is close to irrelevant because the program does
not stay resident in memory for long
- execution speed is likely dominated by communication with the Nitrokey
itself, which is a slow I/O device
With that in mind, this change decreases the binary size further by
swapping the default allocator we use (typically jemalloc) with the
system allocator (which is malloc based on Unix systems). Given that we
are by no means allocation sensitive, there is no point in wasting
binary size on something that adds no value.
This change decreases the binary size by another 324 KiB (for an already
stripped release mode binary).
-rw-r--r-- | nitrocli/CHANGELOG.md | 5 | ||||
-rw-r--r-- | nitrocli/src/main.rs | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/nitrocli/CHANGELOG.md b/nitrocli/CHANGELOG.md index 396e966..77841dd 100644 --- a/nitrocli/CHANGELOG.md +++ b/nitrocli/CHANGELOG.md @@ -1,3 +1,8 @@ +Unreleased +---------- +- Further decrease binary size by using system allocator + + 0.2.2 ----- - Added the `-v`/`--verbose` option to control libnitrokey log level diff --git a/nitrocli/src/main.rs b/nitrocli/src/main.rs index 9a4216a..8d5953b 100644 --- a/nitrocli/src/main.rs +++ b/nitrocli/src/main.rs @@ -80,6 +80,7 @@ mod pinentry; #[cfg(test)] mod tests; +use std::alloc; use std::env; use std::ffi; use std::io; @@ -88,6 +89,13 @@ use std::result; use crate::error::Error; +// Switch from the default allocator (typically jemalloc) to the system +// allocator (malloc based on Unix systems). Our application is by no +// means allocation intensive and the default allocator is typically +// much larger in size, causing binary bloat. +#[global_allocator] +static A: alloc::System = alloc::System; + type Result<T> = result::Result<T, Error>; const NITROCLI_ADMIN_PIN: &str = "NITROCLI_ADMIN_PIN"; |