私はエイリアスを使用し、1つif..else
のケースでのみ構成されたいくつかの関数エイリアスを作成し始めました。たとえば、私の実行には次のエイリアスがありますjson-server
。
jsp() {
if [[ -z $2 ]]; then
json-server --watch data/db.json --port $1
else
json-server --watch $1 --port $2
fi
}
エイリアスが多いと端末のパフォーマンスに影響しますか?このif..else
タイプのエイリアスをどのように改善できますか(たとえば、1行にする)。
ベストアンサー1
エイリアスが多く、関数が小さくても、ランタイムパフォーマンスには測定可能な影響はありません。
たくさん所有する大きい機能は、対話型シェルを開始するのに必要な時間に影響します。シェルはすべてのコードを解析する必要があります。初期化ファイルが遅いネットワークファイルシステムにない場合、それに気付く可能性はありません。これが問題の場合(もう一度言うが、実際に問題がない限り心配しないでください)、大きな関数が自動的にロードされバイトコンパイルされていること(zshの場合)を確認するか、別のスクリプトに分割します(すべてのシェルの場合)。一般に、インタラクティブシェルを最初にロードしなくても独自に使用できるようにするための大きな機能については良い考えです。
比較のためにBashのスマートコンプリート機能を使用すると、Bashの起動時に約60,000行のコードがロードされます。したがって、開始時に顕著な違いを作成するには、独自のコードがたくさんある必要があります。