Я использую JAR-файл Google Closure Compiler, чтобы свести к минимуму рабочие JS-файлы, отражающие изменения, сделанные моими клиентами. Каждый раз, когда пользователь нажимает «Опубликовать изменения» на задней панели, он создает системный вызов файла компилятора.jar, но каждый такой вызов занимает 4-6 секунд, независимо от размера файла JS. После исследования я обнаружил, что большая часть задержки связана с загрузкой JavaVM для каждого вызова. Система - Ubuntu и Python.
Как я могу поддерживать постоянную работу JavaVM и загружать файлcompile.jar каждый раз, когда пользователь нажимает «Опубликовать»?
Код Python:
import subprocess
jarjs = os.path.join(ROOT_DIR, "compiler.jar")
fn_output = fn_source.replace('.js','.min.js')
p = subprocess.Popen(['java','-jar',jarjs,'--jscomp_off','internetExplorerChecks','--compilation_level','SIMPLE_OPTIMIZATIONS','--js',fn_source,'--js_output_file',fn_output], stdout=subprocess.PIPE,stderr=subprocess.PIPE)
out, err = p.communicate()