- From: Domenic Denicola <notifications@github.com>
- Date: Mon, 20 Jun 2016 11:28:40 -0700
- To: whatwg/dom <dom@noreply.github.com>
- Cc:
- Message-ID: <whatwg/dom/issues/270/227227835@github.com>
@annevk > most of the "allocations" in this proposal are not actually allocations. Integers are created which should be much more light-weight than actual objects and don't impact GC and such. (And also, I think it might be a good idea to define DOMChangeList and DOMTreeConstruction as ECMAScript-style objects. They really shouldn't perform much validation and the more browsers can inline the better.) Hmm, can you expand on this? I didn't see any integers in this proposal. Going through the sample code: ```js // Usual DOM API: let article = document.getElementById('main-article'); // Node wrapper (1) let text = node.firstChild; // Node wrapper (2) text.textValue = "Hello world"; // no allocations node.setAttribute("data-active", "yes"); // no allocations node.removeAttribute("data-pending"); // no allocations ``` ```js // ChangeList API: let articleToken = document.getToken(document.getElementById('main-article')); // Node wrapper + Token backing + Token wrapper (3) let changes = new DOMChangeList(); // ChangeList backing + ChangeList wrapper (5) let textToken = changes.firstChild(token); // Token backing + Token wrapper (7) changes.updateTextData(textToken, "Hello world"); // no allocations changes.setAttribute(articleToken, "data-active", "yes"); // no allocations changes.removeAttribute(articleToken, "data-pending"); // no allocations document.applyChanges(changes); // promise (8) ``` I see 2 allocations for normal DOM APIs (both simple wrapper allocations, which are "an integer" (pointer) size each) and 8 allocations for the ChangeList example. And that isn't included the transfer cost. --- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/dom/issues/270#issuecomment-227227835
Received on Monday, 20 June 2016 18:29:11 UTC