17 poin oleh GN⁺ 2026-01-11 | 9 komentar | Bagikan ke WhatsApp
  • Oh My Zsh(OMZ) masih sering direkomendasikan, tetapi menyebabkan beban skrip yang tidak perlu yang memperlambat waktu startup shell
  • OMZ ditulis sebagai skrip shell, sehingga setiap kali membuka tab terminal baru semua skrip harus diinterpretasikan ulang, dan bahkan dengan konfigurasi dasar saja muncul jeda sekitar 0,38 detik
  • Dengan memakai konfigurasi minimal Zsh, prompt Starship, dan pencarian riwayat berbasis fzf, waktu startup bisa dipangkas menjadi 0,07 detik
  • Starship menyusun prompt sebagai satu biner, sehingga dapat menggantikan plugin git, virtual environment, dan plugin per bahasa yang biasa dipakai di OMZ
  • Dibanding plugin yang rumit, konfigurasi shell yang ringan dengan hanya menambahkan fungsi yang benar-benar dibutuhkan lebih efisien

Masalah performa Oh My Zsh

  • Oh My Zsh(OMZ) masih banyak dipakai, tetapi menurunkan kecepatan startup shell karena bloat yang tidak perlu
    • OMZ tersusun dari skrip shell, jadi saat membuka tab terminal baru semua skrip harus diinterpretasikan
    • Pada konfigurasi yang menyertakan plugin bawaan (git, zsh-autosuggestions, zsh-autocomplete), hasil menjalankan /usr/bin/time -f "%e seconds" zsh -i -c exit memakan waktu 0,38 detik
  • Saat membuka tab baru di folder repositori git, jeda yang terasa bisa mencapai sekitar 1 detik
  • OMZ secara berkala memeriksa pembaruan, dan proses ini dapat menimbulkan tambahan jeda beberapa detik
  • Pembaruan konfigurasi shell yang terlalu sering tidak perlu, dan konfigurasi sederhana dengan hanya menambahkan fungsi yang dibutuhkan secara langsung lebih disarankan

Konfigurasi minimal Zsh

  • Konfigurasi minimal Zsh yang diusulkan adalah sebagai berikut
    export HISTSIZE=1000000000
    export SAVEHIST=$HISTSIZE
    setopt EXTENDED_HISTORY
    setopt autocd
    autoload -U compinit; compinit
    
    • HISTSIZE dan SAVEHIST menentukan ukuran riwayat perintah
    • EXTENDED_HISTORY menambahkan timestamp ke riwayat
    • autocd memungkinkan berpindah direktori tanpa perintah cd
    • compinit melakukan inisialisasi sistem autocompletion
  • Dengan pengaturan ini saja sudah tersedia lingkungan shell dasar dengan fitur completion

Kustomisasi prompt

  • Prompt menggunakan Starship
    • Starship adalah prompt cepat dan minimal yang dikemas sebagai satu biner
    • Ini menggantikan plugin dan tema OMZ yang ada, sambil menampilkan status git, virtual environment, dan status per bahasa
  • Pada contoh konfigurasi Starship, indikator terkait cloud seperti AWS, GCP, Azure, NodeJS, dan lainnya dinonaktifkan untuk mengurangi gangguan visual
  • Pada proyek Python dan Rust, masing-masing bahasa ditonjolkan di prompt, dan waktu eksekusi perintah juga ditampilkan
  • Aktifkan dengan menambahkan satu baris berikut ke .zshrc
    eval "$(starship init zsh)"
    

Pencarian riwayat

  • Plugin zsh-autosuggestions yang umum dipakai dapat menampilkan saran saat mengetik dan berpotensi mengalihkan perhatian
  • Sebagai gantinya, ikat fzf ke Ctrl+R untuk menelusuri riwayat dengan fuzzy search interaktif
    source <(fzf --zsh)
    

Hasil peningkatan performa

  • Setelah pengaturan di atas diterapkan, waktu startup shell menjadi sebagai berikut
    ❯ /usr/bin/time -f "%e seconds" zsh -i -c exit
    0.07 seconds
    
  • Didapatkan kecepatan startup sekitar lebih dari 5 kali lebih cepat dibanding OMZ

Tip tambahan

  • Pengguna Vim bisa mengaktifkan mode Vim di Zsh untuk mempercepat pengeditan perintah
    set -o vi
    bindkey -v '^?' backward-delete-char
    
    • Karena zle secara default memakai key binding Emacs, pengaturan ini menambahkan dukungan input bergaya Vim

Kesimpulan dan kasus penggunaan

  • Setelah beralih dari OMZ, adaptasi ke workflow baru hanya memerlukan beberapa hari
  • Plugin yang diperlukan tetap bisa dimuat secara manual
  • Alasan membuka banyak tab adalah karena tmux dan editor berbasis terminal (helix) dipakai bersama
    • Di tmux, lazygit dan file manager yazi dijalankan sebagai popup
    • Dipakai juga pane split sementara untuk menjalankan kode dan melihat output pengujian, dan masing-masing berjalan sebagai sesi shell terpisah

Ringkasan komentar

  • Sebagian pengguna berpendapat waktu startup OMZ di kisaran 0,03 detik sudah cukup cepat
  • Penulis menunjukkan bahwa plugin zsh-autocomplete memperlambat performa
  • Pada hasil zsh-bench, jeda ke prompt pertama OMZ sebesar 603ms, sedangkan konfigurasi Zsh sederhana tercatat 103ms
  • Starship menggantikan fitur prompt OMZ dengan satu alat saja
  • Pengguna lain juga menyebut alternatif seperti Zimfw, Atuin, dan prompt bash buatan sendiri

9 komentar

 
roxie 2026-02-27

Kalau tidak dioptimalkan memang sangat lambat. Tapi karena sudah terbiasa dengan banyak fiturnya, agak susah juga untuk benar-benar pindah.

 
tesha001 2026-01-12

Saya belum merasa ini cukup mengganggu sampai benar-benar menonjol.

 
princox 2026-01-12

Ini bukan server web, jadi kalau tidak sampai terasa merepotkan, ya saya anggap wajar saja..

 
zxcv123 2026-01-11

Namanya juga para developer, ributnya heboh cuma gara-gara beberapa ms yang nggak penting wkwk

 
kayws426 2026-01-12

Bukankah teknologi berkembang justru karena mengejar beberapa ms yang tidak perlu itu?

 
t7vonn 2026-01-11

Jika Anda sering menggunakan terminal, latensi tambahan yang disebabkan oleh omz terasa cukup mengganggu.

 
devfluotin 2026-01-12

Beberapa bulan lalu saya beralih ke prezto, dan saya sempat berpikir, memangnya omz dulu selambat ini ya?
Bahkan hanya dengan beberapa plugin dasar saja sudah terasa jauh lebih lambat...

 
wedding 2026-01-14

Saya pindah ke starship.

 
GN⁺ 2026-01-11
Komentar Hacker News
  • Saya hanya punya satu alasan untuk memakai oh-my-zsh
    yaitu untuk mendapatkan lingkungan shell yang langsung produktif yang bisa dipakai segera di mesin baru, host jarak jauh, atau container mana pun
    Daripada menghabiskan berjam-jam mengutak-atik konfigurasi sendiri, saya lebih memilih memakai waktu itu untuk hal yang lebih penting

    • Saya ingin merekomendasikan mencoba Starship
      Pengalaman “langsung bisa dipakai setelah instalasi” tetap ada, tapi tanpa latensi prompt lebih dari 200ms
      Instalasinya cukup satu baris curl, dan konfigurasinya juga sederhana
      Menurut saya Anda tidak akan menyesal mencobanya
    • Jika itu mesin yang mengizinkan konfigurasi kustom, saya rasa lebih baik menyalin dotfiles buatan sendiri
      Setelah file konfigurasi dibuat sekali dan dikelola dengan git, Anda bisa memakainya apa adanya di mesin lain
      Saat menyiapkan mesin baru, saya juga cukup membawa dotfiles agar lingkungan yang familiar langsung berjalan
    • Bukankah memang dotfiles dibuat untuk tujuan seperti itu?
      Cuma bercanda, tapi menyalin .bashrc jauh lebih mudah daripada memasang shell default
    • Saya juga pernah memakai Oh My Zsh, tapi akhirnya menyerah karena terlalu lambat
      Harus menunggu setiap kali membuka tab sangat mengesalkan
      Pada akhirnya saya hanya memasang beberapa plugin yang saya butuhkan langsung lewat Homebrew, dan itu bahkan tidak sampai satu jam
      Sekarang shell saya jauh lebih cepat dan ringan, jadi saya jauh lebih produktif dan senang
    • Zim juga lumayan. Lebih cepat daripada Oh My Zsh dan konfigurasinya lebih sederhana
      Kecepatan startup shell sangat tinggi dan penyiapannya juga mudah
  • Karena itu saya pindah ke fish
    Memang tidak 100% sesuai selera saya, tapi konfigurasi bawaannya sudah cukup bagus jadi saya tinggal membiasakan diri
    Sekarang saya hampir tidak pernah perlu memikirkan konfigurasi shell lagi

    • Keunggulan pendekatan ini adalah di host mana pun, kalau fish dipasang, Anda bisa memakai lingkungan yang sama tanpa konfigurasi tambahan
    • fish punya performa bagus dan UX yang hebat bahkan dalam kondisi bawaan
      Tapi saya sarankan pemula benar-benar membaca key binding-nya
      Pernah ada rekan tim yang jadi lebih lambat karena tidak tahu fitur seperti tab completion atau shift+arrow
    • Saya penasaran apa yang terasa kurang dari konfigurasi default-nya
      Saya kadang hanya menambahkan binding vim atau plugin fuzzy find
      fish bawaan saja sudah sangat bagus
  • Saya tidak setuju dengan pendapat yang menyarankan menyalakan mode Vim di Zsh
    readline bawaan juga sudah cukup bagus untuk perintah tunggal
    Untuk perintah panjang, cukup edit dengan C-x C-e
    Saat pair programming, perpindahan mode Vim malah terlihat memperlambat

    • Saya baru tahu bahwa shortcut C-x C-e memang sangat berguna
    • Saya juga menyalakan mode Vim lalu menambahkan lagi binding readline
      Sebagian besar waktu saya ada di mode insert, dan hanya memakai C-x C-e saat perlu edit besar
    • Pergantian mode hanya perlu satu tombol, jadi tidak ada alasan harus lambat
      Kalau sudah terbiasa dengan binding vi, perintah seperti w, b, dw jadi lebih cepat karena muscle memory
      Membuka editor terasa memutus alur kerja dan juga menutupi output, jadi saya kurang suka
      Akan menyenangkan kalau shell juga punya fitur Vim seperti menghapus di antara karakter (di")
  • Saya juga memakai oh-my-zsh hanya untuk setelan dasar
    Saya cuma memakai satu plugin git, dan fungsi kustom dimuat otomatis
    Setelah diukur dengan hyperfine, shell login saya sekitar 54ms dan shell biasa sekitar 6ms
    Saya rasa jeda 380ms mungkin disebabkan hal lain

    • Kalau tertarik dengan performa zsh, saya merekomendasikan zsh4humans
      Ia bisa langsung mulai seketika, dan karena ada di mode maintenance justru membantu menghindari pemborosan waktu
    • zsh -l adalah shell login jadi tidak memuat zshrc
      Pengujian seharusnya dilakukan dengan zsh -ic exit
      Untuk detailnya lihat panduan zsh-bench
    • Untuk pengukuran yang lebih akurat, lebih baik tambahkan zprof ke .zshrc
      zmodload zsh/zprof
      ...
      zprof
      
    • Saya juga menyarankan melakukan benchmark di dalam repositori git
    • Coba juga plugin seperti extract, z, fzf
  • Saya pindah ke kombinasi fish + starship
    fish secara bawaan menyediakan autocompletion dan syntax highlighting, jadi bisa menggantikan fungsi utama oh-my-zsh
    Lihat artikel terkait

    • Namun fish memang tidak kompatibel dengan POSIX, jadi ada sisi yang kurang nyaman
      Karena itu saya tetap memakai zsh+starship+skrip init sederhana
      Saya berharap fish bisa benar-benar “langsung bekerja”, tapi untuk sekarang masih ada kekurangannya
    • Saya juga sudah memakai zsh selama puluhan tahun, tapi sejak tahun lalu saya beralih ke fish dan masih memakainya sampai sekarang
      Tidak adanya HEREDOC dan blok background memang kurang nyaman,
      tapi belakangan saya lebih menyukai bahasa yang dibangun menjadi binary tunggal daripada skrip rumit
      Kalau sudah makin matang, saya berencana pindah ke nushell
    • Sebenarnya fish sudah sangat bagus dalam kondisi bawaan, jadi hampir tidak perlu kustomisasi
  • Saya pindah ke Zim beberapa tahun lalu
    Semua fitur yang saya butuhkan ada, dan cepat serta mudah dipasang
    https://zimfw.sh/

    • Zimfw punya sistem instalasi yang sangat cepat dan fleksibel
      Mendukung berbagai sumber dan format, dan integrasi kode zsh-nya juga sangat bagus
      Dibanding kebanyakan sistem plugin, ia jauh lebih baik dalam kecepatan dan kompatibilitas
      Ini framework yang sangat keren
  • Sekitar 15 tahun lalu saat kuliah saya memasang oh-my-zsh,
    dan sejak saat itu saya sangat puas sampai tidak merasa perlu mencoba shell atau konfigurasi lain
    Setiap kali menyiapkan komputer baru, ini selalu jadi hal pertama yang saya pasang

  • Saya sudah lama memakai oh-my-zsh, tapi kali ini saya menghapusnya dalam 5 menit dengan bantuan Claude
    Saya mengganti hanya fitur yang benar-benar saya butuhkan dengan raw zsh
    Karena saya memakai starship sebagai prompt, hampir tidak ada konfigurasi tambahan yang diperlukan
    Sejauh ini semua fungsi tampaknya berjalan baik

  • Ada yang merasa menganggap jeda 0,5 detik di oh-my-zsh sebagai masalah itu berlebihan
    Katanya cukup pakai bash dan KDE konsole saja
    Shell hanyalah pembungkus sederhana untuk pekerjaan, jadi tidak perlu terlalu memikirkan mikro-optimalisasi seperti ini

    • Tapi kalau pekerjaan berpusat pada terminal, Anda bisa membuka puluhan shell per hari
      Karena tiap shell adalah bagian dari alur kerja, jeda 1 detik pun sangat terasa
      Jadi menurut saya shell yang cepat itu penting
    • Sebaliknya ada juga yang bertanya, sebenarnya sehari membuka shell berapa kali?
      Paling banyak sekitar 20 kali, jadi menurut mereka itu bukan masalah besar
    • Orang lain lagi merasa isu ini memang paling tepat dilihat sebagai selera pribadi
      Performa yang cepat tentu bagus, tapi menurut mereka ini bukan masalah yang mendasar
  • Konfigurasi zsh saya sekitar 90 baris dan hanya memakai 3 plugin (compinit, vcs-info, edit-command-line)
    Dari mulai sampai selesai butuh sekitar 0,32 detik
    Di repositori besar, pengambilan info branch menyebabkan jeda
    Utilitas cache bkt(https://github.com/dimo414/bkt) bisa membantu menyelesaikan masalah seperti ini
    Mungkin Starship juga memanfaatkan cache dengan cara serupa