-
Notifications
You must be signed in to change notification settings - Fork 8
Benchmarks
Sam edited this page Sep 11, 2024
·
5 revisions
Comparing against;
- CrabFetch - Built from Commit 991285a.
- FastFetch - Version 2.24.0 as shipped by FastFetch's releases.
- NeoFetch (Deprecated) - Version 7.1.0-2 as shipped by Arch Linux.
CrabFetch Config
modules = [
"hostname",
"underline:16",
"cpu",
"gpu",
"memory",
"swap",
"mounts",
"host",
"displays",
"os",
"packages",
"desktop",
"terminal",
"shell",
"editor",
"uptime",
"locale",
"player",
"initsys",
"processes",
"localip",
"space",
"colors",
"bright_colors"
]
unknown_as_text = false
separator = " > "
title_color = "bright_magenta"
title_bold = true
title_italic = false
decimal_places = 2
inline_values = false
underline_character = '―'
color_character = " "
color_margin = 0
color_use_background = true
use_os_color = true
segment_top = "{color-white}[======------{color-brightmagenta} {name} {color-white}------======]"
segment_bottom = "{color-white}[======------{color-brightmagenta} {name_sized_gap} {color-white}------======]"
progress_left_border = '['
progress_right_border = ']'
progress_progress = '='
progress_empty = ' '
progress_target_length = 20
use_ibis = false
use_version_checksums = false
suppress_errors = true
percentage_color_thresholds = [
"75:brightgreen",
"85:brightyellow",
"90:brightred"
]
[ascii]
display = true
colors = ["bright_magenta"]
margin = 4
side = "left"
[hostname]
title = ""
format = "{color-title}{username}{color-white}@{color-title}{hostname}"
[cpu]
title = "CPU"
format = "{name} {arch} ({core_count}c {thread_count}t) @ {max_clock_ghz} GHz"
remove_trailing_processor = true
[gpu]
amd_accuracy = true
ignore_disabled_gpus = true
title = "GPU"
format = "{vendor} {model} ({vram})"
[memory]
title = "Memory"
format = "{used} / {max} ({percent})"
[swap]
title = "Swap"
format = "{used} / {total} ({percent})"
[mounts]
title = "Disk ({mount})"
format = "{space_used} used of {space_total} ({percent}) [{filesystem}]"
ignore = []
[host]
title = "Host"
format = "{host} ({chassis})"
newline_chassis = false
chassis_title = "Chassis"
chassis_format = "{chassis}"
[displays]
title = "Display ({make} {model})"
format = "{width}x{height} @ {refresh_rate}Hz ({name})"
scale_size = false
[os]
title = "Operating System"
format = "{distro} ({kernel})"
newline_kernel = false
kernel_title = "Kernel"
kernel_format = "Linux {kernel}"
[packages]
title = "Packages"
format = "{count} ({manager})"
ignore = []
[desktop]
title = "Desktop"
format = "{desktop} ({display_type})"
[terminal]
title = "Terminal"
format = "{name} {version}"
[shell]
title = "Shell"
format = "{name} {version}"
show_default_shell = false
[uptime]
title = "Uptime"
[editor]
title = "Editor"
format = "{name} {version}"
fancy = true
[locale]
title = "Locale"
format = "{language} ({encoding})"
[player]
title = "Player ({player})"
format = "{track} by {track_artists} ({album}) [{status}]"
ignore = []
[battery]
title = "Battery {index}"
format = "{percentage}%"
[initsys]
title = "Init System"
format = "{name} {version}"
[processes]
title = "Total Processes"
[datetime]
title = "Date Time"
format = "%H:%M:%S on %e %B %G"
[localip]
title = "Local IP ({interface})"
format = "{addr}"FastFetch Config
NeoFetch Config
print_info() {
info title
info underline
info "CPU" cpu
info "GPU" gpu
info "Memory" memory
info "Disk" disk
info "Host" model
info "Resolution" resolution
info "OS" distro
info "Kernel" kernel
info "Packages" packages
info "DE" de
info "Terminal" term
info "Shell" shell
info "Uptime" uptime
info "Locale" locale # This only works on glibc systems.
info "Song" song
info cols
}
title_fqdn="off"
kernel_shorthand="on"
distro_shorthand="off"
os_arch="on"
uptime_shorthand="on"
memory_percent="off"
memory_unit="mib"
package_managers="on"
shell_path="off"
shell_version="on"
speed_type="bios_limit"
speed_shorthand="off"
cpu_brand="on"
cpu_speed="on"
cpu_cores="logical"
cpu_temp="off"
gpu_brand="on"
gpu_type="all"
refresh_rate="off"
gtk_shorthand="off"
gtk2="on"
gtk3="on"
public_ip_host="http://ident.me"
public_ip_timeout=2
de_version="on"
disk_show=('/')
disk_subtitle="mount"
disk_percent="on"
music_player="auto"
song_format="%artist% - %album% - %title%"
song_shorthand="off"
mpc_args=()
bold="on"
underline_enabled="on"
underline_char="-"
separator=":"
block_range=(0 15)
color_blocks="on"
block_width=3
block_height=1
col_offset="auto"
bar_char_elapsed="-"
bar_char_total="="
bar_border="on"
bar_length=15
bar_color_elapsed="distro"
bar_color_total="distro"
cpu_display="off"
memory_display="off"
battery_display="off"
disk_display="off"
image_backend="ascii"
image_source="auto"
ascii_distro="auto"
ascii_bold="on"
image_loop="off"
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
crop_mode="normal"
crop_offset="center"
image_size="auto"
gap=3
yoffset=0
xoffset=0
background_color=
stdout="off"
All benchmarks we're done using the "hyperfine" tool, version 1.18.0
All benchmarks were done on the same system running the following specs;
- CPU: Ryzen 7 5800HS
- GPU: Built-in APU
- Memory: 22.88 GiB
- Form-Factor: Laptop
Some benchmarks were performed in live-boot environments, these benchmarks are noted as such.
To transfer exact binaries and config files between systems, everything was put on a singular USB stick with a script used to place in config files into their default positions. From there the binaries on those USB sticks were ran, meaning the same version and builds were running at the same time. Another script simply runs the binaries to ensure that they work and have correct configs, and a finals script was used to run the hyperfine benchmark.
create-configs.sh
#!/bin/sh
ROOT_DIR=$(dirname `realpath $0`)
mkdir ~/.config/CrabFetch
mkdir ~/.config/fastfetch
mkdir ~/.config/neofetch
cp c-crabfetch ~/.config/CrabFetch/config.toml
cp c-fastfetch ~/.config/fastfetch/config.jsonc
cp c-neofetch ~/.config/neofetch/config.confverify.sh
#!/bin/sh
chmod +x ./crabfetch
chmod +x ./fastfetch
chmod +x ./neofetch
echo CrabFetch:
./crabfetch
echo FastFetch:
./fastfetch
echo NeoFetch:
./neofetchbench.sh
#!/bin/sh
./hyperfine "./crabfetch" "./fastfetch" "./neofetch" -N --warmup 50Arch Linux
songbird% ./bench.sh
Benchmark 1: ./crabfetch
Time (mean ± σ): 5.7 ms ± 0.8 ms [User: 2.1 ms, System: 3.2 ms]
Range (min … max): 4.2 ms … 9.4 ms 579 runs
Benchmark 2: ./fastfetch
Time (mean ± σ): 7.7 ms ± 0.9 ms [User: 1.1 ms, System: 5.9 ms]
Range (min … max): 5.8 ms … 10.7 ms 444 runs
Benchmark 3: ./neofetch
Time (mean ± σ): 254.1 ms ± 4.4 ms [User: 164.5 ms, System: 93.4 ms]
Range (min … max): 247.0 ms … 261.3 ms 11 runs
Summary
./crabfetch ran
1.35 ± 0.23 times faster than ./fastfetch
44.62 ± 5.94 times faster than ./neofetch
songbird% crabfetch
~! sam@songbird
^YY^ ――――――――――――――――
:JYYY^ CPU > AMD Ryzen 7 5800HS with Radeon Graphics x86_64 (8c 16t) @ 4.46 GHz
:JYYYYY^ GPU > Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [Radeon Vega Series / Radeon Vega Mobile Series] (512 MB)
:JYYYYYYY^ Memory > 1.03 GB / 24.57 GB (4.2%)
^JYYYYYYYYY^ Swap > 0.00 KB / 32.21 GB (0%)
~YYYYYYYYYYYY~ Disk (/) > 5.53 GB used of 469.10 GB (1.18%) [ext4]
~YYYYY?!!?YYYYY! Disk (/boot) > 161.29 MB used of 1.07 GB (15.05%) [vfat]
!YYYYY! ~YYYYY7. Disk (/efi) > 242.00 KB used of 1.07 GB (0.02%) [vfat]
.7YYYYYJ ?YYYYY?. Host > VivoBook_ASUSLaptop M1603QA_M1603QA (Notebook)
.?YYYYYJ7 7JJYYYYJ: Display (AUO AUO459D) > 1920x1200 @ 60Hz (eDP-1)
^JY?7~^.. ..^~7?YY^ Operating System > Arch Linux (6.10.9-arch1-1)
^7~: :~7^ Packages > 468 (pacman)
Desktop > Hyprland (wayland)
Terminal > kitty 0.36.2
Shell > zsh 5.9
Editor > Unknown
Uptime > 14m 37s
Locale > en_GB (UTF-8)
Unknown module: player
Init System > systemd 256.5
Total Processes > 262
Local IP (wlan0) > 192.168.1.248
songbird%
{ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", "display": { "separator": " > " }, "general": { "detectVersion": true }, "modules": [ "title", "separator", "cpu", "gpu", "memory", "swap", "disk", "host", "chassis", "display", "os", "kernel", "packages", "wm", "terminal", "shell", "editor", "uptime", "locale", "media", "initsystem", "processes", "localip", "break", "colors" ] }