3 ms·
I think a TypeScript style structural type system could work.
by fauigerzigerk 6y ago
I think a TypeScript style structural type system could work.
- meheleventyone 6y agoBe careful because there are perf issues if you are using parametric polymorphism. Monomorphic functions are preferable but the real problems occur once you get past the inline cache's maximum number of 'shapes'. This obviously applies to regular JS as well.
- fauigerzigerk 6y agoPerhaps I misunderstand, but wouldn't that only apply if you attach functions to objects? I suppose you wouldn't do that if you follow data oriented programming principles.
- meheleventyone 6y agoNope. It's about the different types passed into a function parameter. For optimization JS engines look at the differing shapes of JS objects. Which is determined by the order and type of each member. So: { a: 6, b: 7 } is different to { b: 7, a: 6 } and { a: "six", b: "seven" } is different to both. This is done so the member can be looked up quickly by offset. Functions then have an inline cache that stores the shapes the function has seen. If the function is called monomorphically it will only ever see one shape and hit the fastest path. If it is called with up to three shapes (in V8) it will be pretty quick. Once past three the cache falls through to a global table and is dog slow. This matters if you are using structural typing as you are still creating different shapes to be passed into the same function(s).
- fauigerzigerk 6y agoI see. Thanks for explaining. That's very good to know!