대학 1학년 숙제로나 나올법한 일인데.
나름대로 최적화가 될 가능성이 남아있었다.
1. regular expression의 evaluation을 loop 밖에서 미리 한다.
(qr/ / 이용)
2. 많이 걸러질 rule를 먼저 match 시켜서 if instruction의 수행량을 줄인다.
(단순한 rule들은 compression하고 rule를 heuristic하게 sort한다.)
3. I/O 크기를 줄인다. (output 파일의 내용을 줄인다.)
---------------------
RedHat 9 에서 sort와 grep의 문제점.
locale에 따라(LC_COLLATE 환경변수 설정)에 따라 collation방법(string compare)이 다르다.
따라서 strcmp()와 같은 방식으로 하려면 locale을 C (unset)으로 줘야한다.
$ (LANG=C sort -T /svc/tms/tmp)
grep도 collation 방법에 따라 속도가 10배 이상 차이나기도 한다.
$ (LANG=C grep -i -v -F -f $DOMAIN_RULE)
------
또한 RedHat9의 sort utility에는 버그가 있어서 느릴 수 있으므로
RedHat 7.3의 sort를 복사해서 쓰도록한다.
댓글 없음:
댓글 쓰기