Shell không thực hiện bất kỳ việc sắp xếp lại mã nào mà chúng được trao, nó chỉ được diễn giải hết dòng này đến dòng khác (không có ý nghĩa gì khác trong trình thông dịch lệnh). Phần lớn thời gian dành cho shell dành cho phân tích từ vựng / phân tích cú pháp / khởi chạy các chương trình được gọi.
Đối với các thao tác đơn giản (như các chuỗi munging trong các ví dụ ở cuối câu hỏi) Tôi sẽ ngạc nhiên nếu thời gian để tải các chương trình không làm thay đổi bất kỳ sự khác biệt tốc độ cực nhỏ nào.
Đạo đức của câu chuyện là nếu bạn thực sự cần nhiều tốc độ hơn, bạn nên sử dụng một ngôn ngữ được biên dịch (bán) như Perl hoặc Python, để chạy nhanh hơn để bắt đầu, trong đó bạn có thể viết nhiều thao tác được đề cập trực tiếp và không phải gọi ra các chương trình bên ngoài và có tùy chọn gọi các chương trình bên ngoài hoặc gọi vào các mô-đun C (hoặc bất cứ thứ gì) được tối ưu hóa để thực hiện nhiều công việc. Đó là lý do tại sao trong Fedora, "đường quản trị hệ thống" (GUI, về cơ bản) được viết bằng Python: Có thể thêm một GUI đẹp mà không cần quá nhiều nỗ lực, đủ nhanh cho các ứng dụng như vậy, có quyền truy cập trực tiếp vào các cuộc gọi hệ thống. Nếu điều đó không đủ tốc độ, hãy lấy C ++ hoặc C.
Nhưng đừng đến đó, trừ khi bạn có thể chứng minh rằng hiệu suất đạt được là sự mất mát về tính linh hoạt và thời gian phát triển. Các kịch bản Shell không quá tệ để đọc, nhưng tôi rùng mình khi nhớ một số tập lệnh được sử dụng để cài đặt Ultrix mà tôi đã từng cố gắng giải mã. Tôi đã từ bỏ, quá nhiều "tối ưu hóa tập lệnh shell" đã được áp dụng.