디렉토리에 여러 개의 PNG 이미지가 있고 이미지 크기를 최적화하고 줄이기 위해 optipng
을 사용하고 있습니다. 문제는 모든 파일을 최적화하는 데 너무 오래 걸리는 것입니다.여러 CPU 코어를 사용하여 디렉토리의 이미지 최적화
나는 쿼드 코어 프로세서를 가지고 있는데, optipng
은 디렉토리를 최적화 할 때 이라는 단일 코어만을 사용하고있는 것으로 나타났습니다.
이
나는 코드를 사용하고 있습니다 :ls -1 | while read line
do
optipng -o7 "$line"
done
이 디렉토리를 읽는 동안 병렬로 네 개의 서로 다른 파일을 optipng
을 수행 할 수 있습니까?
호기심에서 벗어나서 왜 프로세스 당 하나의 파일 이름으로 제한하고 싶습니까? – UpTheCreek
@UpTheCreek :'optipng'는 여러 개의 파일 이름을 지원하므로 사용할 수 있습니다. 그러나 프로세스 당 하나의 파일을 할당하면 더 나은 배포가 이루어져야합니다. 2 개의 병렬 프로세스 (각각 하나의 CPU 코어에 있음)를 고려하고, 2 개의 매우 느린 (매우 큰) 및 2 개의 매우 빠른 4 개의 파일을 고려하십시오. 프로세스 당 2 개의 파일을 할당하면 매우 느린 2 개의 파일이 동일한 CPU 코어에 대기하고 다른 코어는 유휴 상태가됩니다. 프로세스 당 1을 지정하면 파일이 남아 있지 않을 때까지 CPU 코어를 유휴 상태로 두어서는 안됩니다. –
그냥 몇 가지 실험을 시도하고 높은 n 값 (내 경우에는 50)을 전달하는 성능이 훨씬 향상되었습니다. '-n 50 -P 3'에서는 3 코어에 100 % cpu를 사용하게되었습니다. '-n 1 -P 3'을 사용하면 CPU 사용량이 너무 많이 증가했습니다 (아마 더 많은 프로세스를 설정/해제하는 오버 헤드가 높아짐에 따라). – UpTheCreek