Javascript 我如何获得谷歌&x27;s闭包编译器来消除属性

Javascript 我如何获得谷歌&x27;s闭包编译器来消除属性,javascript,optimization,google-closure-compiler,Javascript,Optimization,Google Closure Compiler,在以下代码上使用Google Closure编译器高级优化时: function add(v1, v2){ return {x: v1.x + v2.x, y: v1.y + v2.y}; } function lengthSq(vec){ return vec.x*vec.x+vec.y*vec.y; } function test(v11, v12, v21, v22) { return lengthSq(add({x:v11, y:v12},{x:v21, y:

在以下代码上使用Google Closure编译器高级优化时:

function add(v1, v2){
    return {x: v1.x + v2.x, y: v1.y + v2.y};
}

function lengthSq(vec){
    return vec.x*vec.x+vec.y*vec.y;
}

function test(v11, v12, v21, v22) {
    return lengthSq(add({x:v11, y:v12},{x:v21, y:v22}));
}
window['func']=test;
我得到了这个令人不满意的结果:

window.func = function(b, c, a, d) {
  b = {x:b, y:c};
  a = {x:a, y:d};
  a = {x:b.x + a.x, y:b.y + a.y};
  return a.x * a.x + a.y * a.y
};
我所希望的是:

window.func = function(a, b, c, d) {
  return (a+c) * (a+c) + (b+d) * (b+d)
};
这里真正的问题是,我需要将值存储在属性中,以便从函数中获取多个返回值。据我所知,没有其他方法可以获得多个返回值。我最初希望闭包编译器能为我消除这些问题,但现在看来并非如此

是否可以有一个功能性或面向对象的javascript库,可以输出与手动优化示例等效的代码?

我确信我的性能测试代码是有缺陷的,因为没有属性的代码在Chrome和Firefox上大约快100倍,在Opera上快12倍,在IE9上快4倍


此代码的性能测试:

正在审查的编译器有一个挂起的更改,试图执行此操作: