JS benchmark - factory vs class

Am scris un benchmark care instantiaza un model si ruleaza cateva metode.

Ce m-a surprins este ca factory este mult mai rapid in Chrome (V8 / Node) decat class expressions.

Am rugamintea daca are cineva IE Edge la indemana si poate testa sa adauge un screenshot.


Chrome - v52.0

Firefox - v47.0

2 Likes

Nu merge in IE sau Edge.

Mi se pare de asemenea, foarte interesant, diferenta intre FF si Chrome - 10x. Sunt pe acelasi calculator?

@tachyean am facut 2 versiuni pt. Edge fara desctructuring si fara class. Unul din ele ar trebui sa fie util.

@horia141 da, sunt pe acelasi PC, poti incerca benchmark-ul si sa pui rezultate daca ai timp.

Merge in edge acum.

edge:

chrome:

firefox:

Se pare ca edge < all :slight_smile:

1 Like

Bechmarking a JIT enabled VM in a real browser is not something one can call … valid. Also: micro-benchmarks!

Interesant, ma intereseaza acest benchmark pentru un joc facut in JavaScript!

Observ ca totusi metoda “factory” AR TREBUI sa fie cea mai deficitara pentru ca va consuma mai multa memorie. Dupa logica mea, daca declari toate metodele obiectului in constructor, acestea o sa fie copiate pe toate instantele, spre deosebire de prototype.

E posibil ca build-ul stool sa contina o versiune mai veche de benchmarkjs sau implementarea sa fie buggy. Inca investighez asta.

2 Likes

Ai dreptate am facut un test cu ultima versiune de benchmark.js si valorile rezultatelor sunt mult mai apropiate acum, diferentele sunt de 5-10%, tot factory pare sa fie mai rapid, dar intr-adevar ma astept sa consume mai multa memorie.

Cam asta vreau sa aflu, cam care sunt penalizarile de performanta folosind o abordare functional programming.

O sa fac niste teste folosing DevTools CPU Profiler. Revin cu un update.

2 Likes

hint, hint: http://elm-lang.org/

@dakull

Also: micro-benchmarks!

Poti sa detaliezi?

hint, hint

Nu m-am prins :slight_smile:
Elm are treaba cu DOM-ul sau mai bine zis conceptul de Virtual DOM in care randezi pe bucati parti din model. Noi vorbim de optimizare de cod JS. In cazul de fata e vorba de “care din urmatoarele metode de declarare de clasa este mai rapida ca instantiere”. Right?

1 Like

Din ce imi dau eu seama, @dakul propune ceva de genul: “sa comparam si functional programmingul javascript cu elm, sa vedem ce iese”. Pe de alta parte, e posibil sa fi inteles eu gresit, e peste mine jetlagul.

factory - FP

=> why not Elm?

microbenchmark ~ A benchmark designed to measure the performance of a very small and specific piece of code.

@navaru http://jsbench.org/test/3DnzKgZOOW - pe mobile chrome prototype iese winner

1 Like

Problem solved:

Object oriented FTW!

class Robot {
  constructor ({ name }) {
    this.name = name
  }

  hello () {
    return this.name
  }
}

const joe = new Robot({ name: 'Joe' })

console.log(joe.hello())
1 Like