Обратите внимание еще на это. При работе с изображениями способом который Вы используете, все изображение для обработки загружается в память в рамках одного процесса. GD очень прожорлив в этом отношении как следствие вы вероятно провоцируете большой обьем дисковых операций (swap), что естественно сказывается на производительности.
Если вы боритесь за производительность, то в вашем случае наиболее оптимальным будет оплата дополнительного дискового прострнаства, и кеширование результатов работы скрипта.