zsh 별칭이 터미널 성능을 저하합니까?

zsh 별칭이 터미널 성능을 저하합니까?

나는 별칭을 사용하고 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

별칭이 많고 함수가 작아도 런타임 성능에는 측정 가능한 영향이 없습니다.

많이 소유하다기능은 대화형 쉘을 시작하는 데 필요한 시간에 영향을 줍니다. 셸은 모든 코드를 구문 분석해야 합니다. 초기화 파일이 느린 네트워크 파일 시스템에 있지 않으면 이를 알아차릴 가능성이 없습니다. 이것이 문제인 경우(다시 말하지만, 실제로 문제가 되지 않는 한 걱정하지 마십시오), 큰 함수가 자동 로드되고 바이트 컴파일되었는지(zsh의 경우) 확인하거나 별도의 스크립트로 분할하십시오(모든 쉘의 경우). 일반적으로 대화형 셸을 먼저 로드하지 않고도 자체적으로 사용할 수 있도록 큰 기능에 대해 좋은 생각입니다.

비교를 위해 Bash의 스마트 완성 기능을 사용하면 Bash가 시작될 때 약 60,000줄의 코드가 로드됩니다. 따라서 시작 시간에 눈에 띄는 차이를 만들려면 자체 코드가 많이 있어야 합니다.

관련 정보