Skip to content

Benchmarks

Sam edited this page Jul 12, 2024 · 4 revisions

Comparing against;

Config Files

CrabFetch Config
modules = [
    "hostname",
    "underline:16",
    
    "cpu",
    "gpu",
    "memory",
    "swap",
    "mounts",
    "host",
    "displays",
    
    "os",
    "packages",
    "desktop",
    "terminal",
    "shell",
    "editor",
    "uptime",
    "locale",
    "music",
    "initsys",
    "processes",
    
    "space",
    "colors",
    "bright_colors"
]
seperator = " > "
title_color = "bright_magenta"
title_bold = false
title_italic = false
decimal_places = 2
inline_values = false
underline_character = ''
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 = true
suppress_errors = true
percentage_color_thresholds = [
    "75:brightgreen",
    "85:brightyellow",
    "90:brightred"
]
    
[ascii]
display = true
colors = ["bright_magenta"]
margin = 4
    
[hostname]
title = ""
format = "{color-brightmagenta}{username}{color-white}@{color-brightmagenta}{hostname}"
    
[cpu]
title = "CPU"
format = "{name} ({core_count}c {thread_count}t) @ {max_clock_ghz} GHz"
    
[gpu]
method = "pcisysfile"
cache = false
amd_accuracy = true
ignore_disabled_gpus = false
    
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 = ["/boot", "/snap", "tmpfs", "vfat"]
    
[host]
title = "Host"
    
[displays]
title = "Display ({name})"
format = "{width}x{height} @ {refresh_rate}Hz"
    
[os]
title = "Operating System"
format = "{distro} ({kernel})"
    
[packages]
title = "Packages"
format = "{count} ({manager})"
ignore = []
    
[desktop]
title = "Desktop"
format = "{desktop} ({display_type})"
    
[terminal]
title = "Terminal"
chase_ssh_pts = false
    
[shell]
title = "Shell"
format = "{shell}"
show_default_shell = false
    
[uptime]
title = "Uptime"
    
[editor]
title = "Editor"
format = "{name}"
fancy = true
    
[locale]
title = "Locale"
format = "{language} ({encoding})"
    
[music]
title = "Music"
format = "{track} by {track_artists} ({album})"
player = "spotify"
    
[battery]
title = "Battery"
format = "{percentage}%"
    
[initsys]
title = "Init System"
    
[processes]
title = "Total Processes"
FastFetch Config
{
  "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
  "logo": {
    "color": {
      "1": "35",
      "2": "35"
    }
  },
  "display": {
    "color": "35",
    "separator": " > "
  },
  "general": {
    "detectVersion": false
  },
  "modules": [
    "title",
    "separator",

    "cpu",
    "gpu",
    "memory",
    "swap",
    "disk",
    "host",
    "display",

    "os",
    "kernel",
    "packages",
    "wm",
    "terminal",
    "shell",
    "editor",
    "uptime",
    "locale",
    "media",
    "initsystem",
    "processes",

    "break",
    "colors"
  ]
}
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=()
colors=(13 5 15 13 15 15)
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_colors=(13)
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"

Methodology & Scripts

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.conf
verify.sh
#!/bin/sh

chmod +x ./crabfetch
chmod +x ./fastfetch
chmod +x ./neofetch

echo CrabFetch:
./crabfetch
echo FastFetch:
./fastfetch
echo NeoFetch:
./neofetch
bench.sh
#!/bin/sh
./hyperfine "./crabfetch" "./fastfetch" "./neofetch" -N --warmup 50

Results

Arch Linux

image

Fedora Linux (Live Boot)

image