는 그것이 뭔가를 받아 들일 것 중요하지 않은 (그리고 빈 줄), 그다지 할 압축이별로 없습니다.
지난 몇 년 동안 작성한 424 개의 쉘 스크립트에 대한 원유 테스트를 수행했으며 16561 입력 줄 (386008 자) 및 11992 출력 줄 (278349 자)이있었습니다. 따라서 저축률은 약 28 %였다.
나는이 거의 사소한 펄 스크립트 사용 (어떤 의미에서 최적화되지 않은, 원래 입력 파일마다 별도의 출력 파일에 쓸 거라고 - 따라서 간단한
while (<>)
루프 대신 처리 명시 적 파일) :
#!/usr/bin/env perl
use strict;
use warnings;
foreach my $file (@ARGV)
{
open my $fh, "<", $file or die "Failed to open $file";
my $line = <>;
print $line;
while ($line = <>)
{
next if $line =~ m/^#/;
next if $line =~ m/^\s*$/;
$line =~ s/^\s+//;
$line =~ s/\s+$//;
print $line;
}
close $fh;
}
(내 스크립트의 대부분은 나이가 비록 일반적으로 오두막 라인 - 충분한 시간과 돌보지 - 그들은 대신 오두막의 :
를 사용)이 첫 선을 잎 변경. 이것은 후행 주석 (공백, 해시, 다른 문자)을 제거하려고하지는 않지만 그 중 많은 것을 사용하지는 않습니다. 대체 명령 추가 :
$line =~ s/\s+#[^\\'"`]*$//;
내 자료에서 275035 자 (약 29 % 절약)가 남았습니다. 모든 첫 번째 행을 '#!/bin/sh
'으로 바꾸면 조금 더 절약됩니다. 약 700 개의 줄에 여러 개의 연속 된 공백 또는 탭이 있지만 압축을 저장하는 추가 공간이 제한되어 있습니다 (많은 경우 공백 또는 탭 조합을 압축하지 않아야 함).
분명히 약 1/3 공간 절약이면 충분하지만이 스크립트는 단순하지만 사용하기 쉽습니다. 공간을 훨씬 더 줄이는 것은 어렵지만, 최소화하고있는 스크립트를 손상시킬 수있는 심각한 위험을 감수하지 않아도됩니다.
고마워요! 어떤 통계를 가지고 있어도 좋습니다. :) – Lethargy
장치에는 8MB의 플래시 메모리 만 있고 OpenWRT가 실행됩니다. 나는 이것을 생각해보기 전에 사용자 정의 된 이미지를 만들기 위해 기울어 져있다. – Lethargy
생각해 보니 : 스크립트가 압축 파일에 저장되고 쉘 (또는 쉘용 래퍼)이 스크립트를 실행하기 전에 임시 파일로 압축을 풀어 볼 수 있습니까? 그러나 디스크 공간의 조각화를 조사해야합니다. 쉘 스크립트는 개별적으로 작은 경향이 있습니다. –