Commit graph

45 commits

Author SHA1 Message Date
ca76a6e1bd
chore: format with rustfmt nightly
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9c9e4e010b09d37f0e0994a5407f3ce56a6a6964
2025-11-17 19:18:39 +03:00
f4f3385ff7
various: fix clippy warnings
- Adds proper documentation comments with `# Errors` sections for all
  functions returning `Result`
- `cast_precision_loss` on `u64` -> `f64` for disk sizes is acceptable
  since disk sizes won't exceed f64's precision limit in practice.
  Thus, we can suppress those.
- `cast_sign_loss` and `cast_possible_truncation` on the percentage
  calculation is safe since percentages are always 0-100. Once again,
  it's safe to suppress.

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Id4dd7ebc9674407d2be4f38ff4de24bc6a6a6964
2025-11-17 18:26:34 +03:00
2ad765ef98
various: reduce allocations where available
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I517d855b14c015569a325deb64948f3b6a6a6964
2025-11-17 18:11:45 +03:00
2a6fe2a3f1
treewide: set up Hotpath for benchmarking individual allocations
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I0351e5753996e6d0391fc9e2f329878a6a6a6964
2025-11-17 17:40:46 +03:00
9bd4c9a70a
treewide: format with nightly rustfmt rules
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib8502372dafe2e970024f606b44825af6a6a6964
2025-11-17 16:20:43 +03:00
1d69d3107c
microfetch: trim fetch screen by one space
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I200c72b5a8249ed3d23754aa3f01aea86a6a6964
2025-11-17 16:20:39 +03:00
9d8905354e
expand comment strings
Some checks failed
Rust / build (push) Has been cancelled
80 chars is good.

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6a6a696460754266ff5810a73f98ce9e6eb0c35b
2025-08-04 21:04:32 +03:00
61d4b7377f
colors: remove lazy_static dependency and use LazyLock for COLORS 2025-06-22 02:53:21 +03:00
ErrorNoInternet
b814b2bacf
refactor: return write error 2025-04-15 03:46:16 -04:00
ErrorNoInternet
0233cdc0fc
perf: use MaybeUninit for libc buffers 2025-04-15 03:46:16 -04:00
ErrorNoInternet
88c9ff5e13
perf: don't collect args into a Vec 2025-04-15 03:46:16 -04:00
ErrorNoInternet
9713138e94
perf: pre-allocate strings 2025-04-15 03:46:15 -04:00
ErrorNoInternet
c139026704
refactor: clean up a few things
I've decided to keep lazy_static for now as std::sync::LazyLock seems to
have a slightly bigger impact on binary size.
2025-04-15 03:46:15 -04:00
e9aa9a2bbe
uptime: get rid of nix crate 2025-03-30 22:33:16 +03:00
d0f88b179c
further optimize uptime retrival
Try and minimize expensive operations (e.g., divisions and allocations) to hopefully get a
*consistent* measurable performance improvement. In my testing this brings the get_current
function duration from > 1.2600 µs to < 1.2400 µs.
2025-01-26 01:06:02 +03:00
592fb58474
get rid of color_eyre
Should never have added it. Annoyingly long compile times for no reason...
2025-01-26 00:57:02 +03:00
SomeEmptyBox
4fff13a51f
Update memory icon (#15)
Some checks failed
Rust / build (push) Has been cancelled
Makes memory icon bigger by using CPU icon from Nerdfonts instead of the memory icon.
2024-12-19 17:02:32 +00:00
4b7836d572
append newline to write_all output
Fixes a small bug that resulted in terminal artifacts. My bad, gang.
2024-12-19 19:13:16 +03:00
fd18e9d244
release: conditionally improve performance for get_os_pretty_name
It is difficult to get completely accurate benchmarks, given how small
the numbers we are dealing with are, but this seems to point at an
overall trend of *slightly* faster execution. The change minimizes
unnecessary memory allocations and string manipulations, to help ensure
more performant line reading and immediate return upon finding the
PRETTY_NAME without additional, redundant operations.
2024-12-19 18:30:33 +03:00
065216af7c
colors: respect NO_COLOR spec
Microfetch will now respect the NO_COLOR environment variable if it has
been passed to the program. The performance overhead of this operation
is almost none. In addition, the main function has been updated to lock
stdout.
2024-12-19 17:21:56 +03:00
3960b37089
faster release parsing
Some checks are pending
Rust / build (push) Waiting to run
Around 20% faster when you think about it, but results vary because of hardware race conditions.
2024-12-09 17:30:57 +03:00
raf
8f5bfcbd05
implement --version for checking program version (#10)
Some checks failed
Rust / build (push) Has been cancelled
2024-10-29 16:45:55 +00:00
vali
f1e8ca8773
add benchmarking for individual functions (#9)
* add benchmarking

* update README to include benchmarking of individual functions

* README: formatting

* README: add link to Criterion's getting_started

* shell.nix: add gnuplot

Since Criterion.rs uses gnuplot to generate nice plots, add it to the
shell.

* Cargo.toml: fixed microfetch binary name

* benchmark.rs: fix benchmark function's name

* Update README.md

---------

Co-authored-by: raf <raf@notashelf.dev>
2024-08-15 17:43:39 +00:00
Ryan
907112f2d1
micro optimizations (#8)
* perf: break early after parsing required meminfo

Also a match statement for compiler magic.

* perf: pre-allocate strings when reading files

* refactor: remove duplicate .to_string()

* perf: try to print everything in one syscall

println! sends a syscall for each line.

* perf: get rid of duplicate uname syscall

* perf: simplify first letter capitalization

* refactor: directly use key in match statement
2024-08-15 10:32:02 +00:00
Ryan
1cf4f754ac
parse /proc/meminfo for memory usage (#7)
* fix: calculate memory usage via /proc/meminfo

* refactor: move sysinfo call into get_current

No longer used by anything but uptime.
2024-08-15 08:14:27 +00:00
vali
4d509839f5
pass sysinfo to system.rs and uptime.rs (#6)
Some checks are pending
Rust / build (push) Waiting to run
2024-08-15 00:29:57 +00:00
b792d41fcc
capitalize first letter of session type
wayland -> Wayland, x11 -> X11
2024-08-14 00:20:03 +03:00
Sora
ae76a0cbe1
refactor: remove some redundant error types (#4) 2024-08-13 20:59:11 +00:00
927f6077b4
store printed fields in a struct
Some checks failed
Rust / build (push) Has been cancelled
Shut up, clippy.
2024-08-05 11:33:42 +03:00
Ryan
13903539b7
perf: use nix::sys::utsname::uname for less syscalls (#2)
Instead of reading multiple files to get the `sysname`, `release`, and
`machine` name, use the `nix::sys::utsname::uname` function which sends a
single uname syscall instead. This increases performance and portability.

From my observations, there are ~10 less syscalls.
2024-08-05 08:08:25 +00:00
7bed1f583b
use color_eyre::Result in most functions 2024-08-05 01:37:32 +03:00
0fb8fbaae6
receive uptime from nix crate 2024-08-05 01:37:13 +03:00
72d3130aa0
clean up get_desktop_info; increment minor version 2024-08-04 22:04:23 +03:00
cf0a52150c
minify and optimize uptime reader 2024-08-04 17:20:34 +03:00
e3112dba1d
trim shell name to omit store path 2024-08-04 17:18:27 +03:00
a44db5e5f3
shell name & colors in output 2024-08-04 13:07:27 +03:00
81cdc0a281
speeding it up 2024-08-04 12:44:19 +03:00
mewoocat
ef2f6dc56e
Better logo (#1) 2024-08-04 09:42:53 +00:00
cff4332122
clippy lints 2024-08-04 00:12:07 +03:00
0e4b2d2ac1
cleanup 2024-08-04 00:05:57 +03:00
42a7f2fc77
apply clippy lints 2024-08-03 23:04:26 +03:00
aae5f71004
use nix crate instead of libc
Provides a higher level and lighter alternative.
2024-08-03 20:56:02 +03:00
29e4ccc806
modularize 2024-08-03 20:42:48 +03:00
f5697754e5
implement color_eyre; main implements Result 2024-08-03 20:04:09 +03:00
6a77ad0682
initial commit 2024-08-03 19:06:29 +03:00