1 poin oleh GN⁺ 5 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Konfigurasi shell yang cepat tidak dicapai hanya dengan pengaturan minimal, dan alat Zsh modern meningkatkan kecepatan startup yang dirasakan dengan cara lain
  • time zsh -i -c exit mengukur waktu inisialisasi dan keluar sekaligus, tetapi yang benar-benar ditunggu pengguna adalah prompt pertama, eksekusi perintah pertama, dan jeda input
  • zsh-bench mengukur hal-hal yang benar-benar terasa, seperti waktu hingga prompt pertama, waktu hingga perintah pertama dijalankan, latensi perintah, dan latensi input
  • Plugin manager tidak selalu lambat; antidote mengompilasi daftar plugin menjadi satu skrip statis sehingga tidak melakukan resolusi dependensi saat startup
  • Konfigurasi minimal bukan satu-satunya jalan menuju kecepatan, melainkan pilihan untuk kesederhanaan yang bisa dipahami, dan shell yang kaya fitur pun bisa terasa seketika

Yang Salah Saya Ukur

  • time zsh -i -c exit adalah cara memulai shell interaktif lalu langsung keluar, sehingga mengukur total waktu inisialisasi dan waktu keluar sekaligus
  • Ini adalah benchmark yang umum dipakai, tetapi zsh-bench membahas secara terpisah mengapa cara ini keliru
  • Yang ditunggu pengguna sebenarnya bukan total waktu inisialisasi, melainkan munculnya prompt, eksekusi perintah pertama, dan latensi setiap penekanan tombol setelahnya
  • Beberapa konfigurasi bisa terlihat lambat pada benchmark ini, tetapi dalam penggunaan nyata justru terasa lebih cepat
  • zsh-bench mengukur waktu hingga prompt pertama, waktu hingga perintah pertama dijalankan, latensi perintah, dan latensi input
  • instant prompt merender prompt yang di-cache tepat saat shell mulai, dan memungkinkan input bahkan sebelum .zshrc selesai
  • Saat instant prompt diterapkan, waktu startup yang dirasakan mendekati 0 terlepas dari biaya inisialisasi, sehingga angka waktu keluar menjadi kurang penting

Koreksi tentang Plugin Manager dan Penyorotan Sintaks

  • Cakupan ungkapan “plugin manager menambah overhead” terlalu luas

    • Beberapa plugin manager memang menambahkan overhead sendiri dan resolusi dependensi saat startup
    • Namun, menerapkan sifat ini pada seluruh kategori plugin manager tidaklah akurat
    • antidote mengompilasi daftar sederhana plugin menjadi satu skrip statis, dan tidak melakukan resolusi dependensi saat shell dibuka
    • Pendekatan antidote pada dasarnya adalah me-source satu file hasil generasi, seperti baris source yang ditulis sendiri
    • Pembedaan yang lebih akurat adalah: framework berat yang mengurai plugin setiap kali startup memang lambat, sedangkan manager bundling statis modern tidak demikian
    • Manager bundling statis modern juga menyediakan pengelolaan pembaruan, sedangkan skrip instalasi buatan sendiri harus menanganinya secara manual
  • Saya merekomendasikan penyorot sintaks yang lambat

    • Dalam konfigurasi yang membahas latensi input, me-source zsh-syntax-highlighting adalah pilihan yang memalukan jika dilihat kembali
    • zsh-syntax-highlighting menyorot ulang seluruh buffer pada setiap penekanan tombol, dan pada baris perintah yang panjang hal ini memang bisa menimbulkan latensi per tombol itulah yang sedang dibahas
    • Zsh-patina adalah pendekatan yang lebih baru, dan untuk kasus mengetik perintah panjang bisa memberi pengalaman yang lebih baik daripada alat yang saat ini dipakai
  • Inti klaim yang masih bertahan

    • Bagian yang benar-benar disukai adalah bahwa seluruh .zshrc bisa dibaca sekaligus
    • Intinya adalah framework tidak mengambil keputusan menggantikan pengguna, dan tidak ada plugin yang tidak dipilih sendiri
    • Karena komponennya lebih sedikit, bagian yang lambat lebih mudah ditemukan jika muncul
    • Pilihan ini lebih merupakan preferensi terhadap kesederhanaan daripada terhadap kecepatan itu sendiri, dan kesederhanaan yang berujung pada kecepatan hanyalah efek samping
    • Shell yang lengkap fiturnya pun bisa cepat dan terasa seketika, dan ada banyak cara untuk mencapai tujuan itu
    • Konfigurasi minimal dipertahankan bukan karena itu satu-satunya jalan menuju kecepatan, melainkan karena ingin memahaminya
  • Penutup

    • Tulisan asli tetap dipertahankan dengan catatan di bagian atas yang mengarah ke tulisan ini
    • Konfigurasinya masih ada di dotfiles, dan penyorot sintaksnya juga masih tetap ada
    • Beberapa pengaturan akan diperbarui agar memakai alat yang lebih baru

1 komentar

 
GN⁺ 5 jam lalu
Opini di Lobste.rs
  • Ini tulisan lanjutan yang bagus karena menunjukkan kekuatan komunitas dan pertukaran ide, dan membuat internet terasa sedikit lebih manusiawi

  • Reaksi awalnya adalah rasa heran bahwa ternyata mengakui dan memperbaiki kesalahan itu masih mungkin dilakukan
    Kalau serius, saya tidak terlalu suka banyak shell baru jadi saya melewatkan tulisan pertama, tetapi tulisan kali ini bagus. ash punya perilaku riwayat bawaan yang tidak cocok dengan cara saya memakai shell, dan shell seperti fish terasa punya terlalu banyak fitur UI yang tidak saya butuhkan
    Namun, fitur yang tampak seperti cache prompt otomatis terlihat menarik. Saya pernah membuat prompt yang sangat rumit sendiri dan mencoba meng-cache-nya secara seadanya, jadi ini terasa relevan

  • Saya suka tulisan seperti ini. Jika lebih banyak orang terbuka soal kesalahan mereka dan mempublikasikan koreksinya, internet akan jadi tempat yang sedikit lebih manusiawi

    • Saya penulisnya. Terima kasih, dan saya berusaha terus mengakui kesalahan terutama untuk memberi teladan bagi tim
  • Setelah membaca tulisan pertama, saya sudah mengoptimalkan zshrc dan memangkas waktunya jadi setengah. Setelah itu saya mencari lebih jauh dan juga memakai zsh-bench, dan tulisan itu menjadi pemicu optimasi

  • Meski sudah tidak dipelihara lagi, zsh4humans masih mendekati yang terdepan dalam hal performa. Orang yang membuatnya terasa seperti semacam jenius Zsh
    Saya sendiri tidak memakainya karena ingin tetap memegang kendali. Meski begitu, untuk bagian-bagian yang bisa saya pahami, saya mengambil ide seperti transient prompt
    Saya tidak tahu bahwa zsh-bench juga proyek dari penulis yang sama

    • Tips yang bagus. Sepertinya ada bagian yang benar-benar berharga di proyek zsh4humans, jadi saya akan melihatnya
  • Berkat tulisan ini saya jadi tahu zsh-patina
    Selama beberapa tahun saya memakai zsh-fast-syntax-highlighting, tetapi alat baru ini juga layak dievaluasi

  • Saya penasaran apakah bagian tentang zsh-syntax-highlighting yang menyorot ulang seluruh buffer setiap kali tombol ditekan sampai menimbulkan jeda itu benar-benar terlihat dalam praktik
    Editor kode pada dasarnya juga melakukan hal yang mirip, tetapi saya hampir tidak pernah merasakan jeda. Kalau dilihat dari standar editor, bahkan perintah yang “panjang” di baris perintah biasanya tetap pendek, jadi agak mengejutkan kalau ini bisa menjadi masalah
    Namun, kalau syntax highlighting memang jauh lebih rumit daripada yang saya bayangkan, mungkin saja itu masuk akal

  • Saya belajar banyak trik baru dari tulisan ini. Sampai sekarang, perbaikan yang saya lakukan hanya yang sederhana seperti memastikan data yang masuk ke prompt tidak berasal dari backend yang lambat
    Di sini ada optimasi prompt yang jauh lebih rinci, dan dalam alur kerja sehari-hari yang membuka terminal tak terhitung jumlahnya, perbaikan kecil seperti ini bisa menumpuk dan memberi dampak besar