우리는 자바 응용 프로그램에서 자바 스크립트를 평가하기 위해 Rhino 엔진을 사용합니다 (자바 스크립트를 매개 변수화로 사용합니다 .DTO -s와 조건의 매개 변수화간에 데이터 전달). 우리는 약간의 성능 테스트를하고 그 결과는 매우 이상합니다.다중 스레드 된 자바 응용 프로그램에서의 자바 스크립트 평가
자바 스크립트 엔진은 매우 느립니다. 그리고 지속 기간은 기하 급수적으로 증가합니다. 전체 엔진을 Nashron으로 변경하는 것에 대해 생각하지만 그 전에는 지금 가지고있는 것을 개선하려고합니다. 그 우리 후
public void init() {
Context cc = Context.getCurrentContext();
if (cc == null) {
cc = Context.enter();
}
this.ctx = cc;
this.scope =this.ctx.initStandardObjects(null);
this.wrapFactory = new WrapFactory();
}
:
우리가 그것을 사용하는 방법에 대한 몇 가지 코드 조각은 내가 내가 JavaScriptEval을 만드는 식을 평가하려고 할 때마다이 방법을 객체 (? 어쩌면 문제는() 여기)
public Object eval(Object scriptId, String source){
Object ret;
ret = ctx.evaluateString(this.scope,source, scriptId.toString(), 1, null);
return ret;
}
,369 : 예를 들어 개체 - 추가 DTO는 우리가 우리의 표현이 방법을 평가하고 그 후 범위
private void putObject(String id, Object obj) {
Context ctx = setupContext();
if (obj != null) {
Scriptable paramWrapper = this.wrapFactory.wrapAsJavaObject(/*this.ctx*/ ctx, this.scope, obj, obj.getClass());
this.scope.put(id, this.scope, paramWrapper);
}
}
에 -S-
어떤 종류의 캐싱을 사용해 보았습니다. compileString 메서드를 사용한 다음 캐시에 저장했습니다. 그러나 메모리 사용량이 그렇게 많이 높았습니다.
그 후에 나는 캐시에 넣은 자바 스크립트 소스의 길이를 제한하려고합니다. 그러나 동시 사용률을 높이는 것과 같은 문제는 성능이 끔찍했습니다.
아이디어가 있으십니까? 모든 제안은 내가 좋은 답변이 그 :)
거기 아니라고 생각