paulmillr / es6-shim

ECMAScript 6 compatibility shims for legacy JS engines
http://paulmillr.com
MIT License
3.11k stars 387 forks source link

Symbol.split polyfill poor performance #451

Open paatrofimov opened 5 years ago

paatrofimov commented 5 years ago

Steps I took to to reproduce issue:

  1. npm init react-app my-app
  2. npm i es6-shim --save
  3. npm start
  4. open console (chrome), run script from below and inspect printed result (~7)
  5. add require('es6-shim') to index.js (devserver updates)
  6. repeat step 4 and inspect another result (~105)
var test = Array.from({length: 100000}, () => 'a').join('.');
var start = new Date();
test.split(/\./)
console.log(new Date() - start);

Why is es6-shim Symbol.split implementation significantly slower than native implementation? Is it a bug or intented behaviour? Also I don't understand, why Symbol.split gets polyfilled though chrome supports its implementation.

Thank you for response in advance.

ljharb commented 5 years ago

Native implementations are always faster than polyfilled ones, that’s unavoidable.

As far as why it gets polyfilled on chrome, you can load the native tests file to see what related tests are failing.