Proxy performance: JIT-compilation?

Alex Vincent ajvincent at gmail.com
Fri Aug 4 21:15:30 UTC 2017


Recently, a fellow engineer observed that ECMAScript proxies are "around
700x slower" in retrieving a property than a simple getter function with a
closure.  He thought this meant "the JIT compiler can't optimize the code".

I'm not so sure, so I thought I'd ask the experts here.

Proxies are one of the frontiers of JavaScript, largely unexplored.  The
ECMAScript specification makes no mention whatsoever of just-in-time
compilation (rightly so, I would think).  But this means that proxy code
execution might be one of those areas where we do not currently enjoy the
benefits of JIT... and we could.

So, I have a direct question for JavaScript engine developers:  other than
having to look up and execute a proxy handler's traps, are there specific
reasons why proxy performance might be significantly slower than a simple
function execution?

I can imagine a three-fold performance test:  (1) direct inspection of an
object, (2) inspection of Proxy({}, Reflect), and (3) inspection of
Proxy({}, handler) where

allTraps.forEach(function(t) {
  handler[t] = function() {
    return Reflect[t].apply(Reflect, arguments);
  }
});

-- 
"The first step in confirming there is a bug in someone else's work is
confirming there are no bugs in your own."
-- Alexander J. Vincent, June 30, 2001
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170804/457038b5/attachment-0001.html>


More information about the es-discuss mailing list