From: Scott Sauyet on 18 Feb 2010 16:20 David Mark wrote: > I wonder if you ran the thing while I had a bad build up there. That > has happened a couple of times in the last week. That's always possible. I don't know if you can tell by looking at a minified version, but it's here: http://scott.sauyet.com/Javascript/Test/taskspeed/2010-02-15a/frameworks/mylib-min.js Obviously that's from the version I ran at http://scott.sauyet.com/Javascript/Test/taskspeed/2010-02-15a/ This one has in addition to the real libraries tested, one I described with the changes to the loop initialization for My Library (slows down by 15%) and one with a number of the cheats I complained about added to the JQuery tests (huge speed-ups.) I tested again today in IE6, which is painfully slow, and I get the same errors. Maybe it was just a bad build. -- Scott
From: David Mark on 18 Feb 2010 16:24 Scott Sauyet wrote: > David Mark wrote: >> Scott Sauyet wrote: > >>> I actually am a fan of test-driven design, but I don't do it with >>> performance tests; that scares me. >> I am sure you are _not_ talking about what I am talking about. At least >> I hope not. And what makes you think that these performance tests had >> anything to do with the changes. FYI, they didn't. > > Well, this is how your post that started this thread began: > > | I've updated the TaskSpeed test functions to improve performance. > This > | necessitated some minor additions (and one change) to the OO > interface > | as well. > > :-) > I know. I just wrote that. I fail to see how it implies that the speed test results had _anything_ to do with adding a loadClone method to the OO interface. JFTR, it didn't.
From: David Mark on 18 Feb 2010 16:26 Scott Sauyet wrote: > David Mark wrote: > >> I wonder if you ran the thing while I had a bad build up there. That >> has happened a couple of times in the last week. > > That's always possible. I don't know if you can tell by looking at a > minified version, but it's here: > > http://scott.sauyet.com/Javascript/Test/taskspeed/2010-02-15a/frameworks/mylib-min.js Yes and no. I can re-test with my IETester in IE6 mode anyway. That may or may not mean anything. Are you using a true blue IE6 or a simulation of some sort? > > Obviously that's from the version I ran at > > http://scott.sauyet.com/Javascript/Test/taskspeed/2010-02-15a/ Okay. I'll just hit that in my IETester IE6 and see what happens. Thanks! > > This one has in addition to the real libraries tested, one I described > with the changes to the loop initialization for My Library (slows down > by 15%) and one with a number of the cheats I complained about added > to the JQuery tests (huge speed-ups.) But jQuery is still bringing up the rear I assume. > > I tested again today in IE6, which is painfully slow, and I get the > same errors. Maybe it was just a bad build. What errors? :) I mean that literally. What is the error message you see? Thanks!
From: David Mark on 18 Feb 2010 17:09 Scott Sauyet wrote: > David Mark wrote: > >> I wonder if you ran the thing while I had a bad build up there. That >> has happened a couple of times in the last week. > > That's always possible. I don't know if you can tell by looking at a > minified version, but it's here: > > http://scott.sauyet.com/Javascript/Test/taskspeed/2010-02-15a/frameworks/mylib-min.js > > Obviously that's from the version I ran at > > http://scott.sauyet.com/Javascript/Test/taskspeed/2010-02-15a/ I just ran it in (IETester) IE6. The only error I see is at the end (dojo is undefined). LOL. Of course, IETester is just some black box that could be doing anything behind the scenes. I normally test with a real IE6 installation. Just so happens that that is not convenient for me at the moment and I want to get to the bottom of this. So, what errors are you seeing? You mentioned three tests and all have had changes in the last little while. As empirical evidence is inconclusive, we should turn to the code at this point anyway. You mentioned sethtml, insertBefore and insertAfter as having some unspecified errors. Typically, I copy and paste the test functions into a blank page so that I can debug the errors. As I can't do that at the moment, I can only go by the code used in each of these test functions:- "sethtml" : function() { var myEl = E().loadNew('p').setText('New Content'); The E constructor is used in almost all of the tests, so we can throw that out as a suspect. Same for its loadNew method. In contrast, the setText method is only used by these three tests, so is a good (if unlikely suspect). So let's round that one up:- ePrototype.setText = function(text) { setElementText(this.element(), text); return this; }; ....which leads to setElementText, which I know works in IE6 and hasn't changed in ages. So I think I can safely rule out the setText method. Back to the test sethtml function:- return Q('div').empty().forEach(function(el) { The - empty - method is used by the finale test as well, but let's look at it too:- ePrototype.empty = function() { emptyNode(this.element()); return this; }; ....which leads to emptyNode:- API.emptyNode = emptyNode = function(node) { while (node.firstChild) { node.removeChild(node.firstChild); } }; ....which is not going to have issues. myEl.loadClone().appendTo(el); Here is the code behind that chain:- if (isHostMethod(html, 'cloneNode')) { ePrototype.clone = function(bChildren) { return this.element().cloneNode(bChildren); }; ePrototype.loadClone = function(bChildren) { return this.load(this.clone(bChildren)); }; } But note the feature detection and realize that TaskSpeed does not do any feature detection of the API as it is one of those run-straight-into-a-wall type of applications. It is likely the authors never heard of detecting _API_ methods, which is admittedly a newly introduced concept (well, over two-years-old at this point). I point this out as these test functions should not even be created if the required features are absent. But then TaskSpeed would have to detect whether the functions were created and that is beyond its current scope. So don't expect TaskSpeed to degrade gracefully like the My Library test page demonstrates. It will definitely crash and burn for all in extremely outdated browsers (which does not describe IE6, of course). ePrototype.appendTo = function(el) { el.appendChild(this.element()); return this; }; Nothing suspicious there. }).load('div').length(); This just re-loads the query. It's not a new feature and I am sure all of this has been previously tested in IE6. }, "insertbefore" : function() { var myEl = E().loadNew('p').setText('A Link'); return Q('.fromcode a').forEach(function(a) { myEl.loadClone().insertBefore(a); }).length(); }, "insertafter" : function() { var myEl = E().loadNew('p').setText('A Link'); return Q('.fromcode a').forEach(function(a) { myEl.loadClone().insertAfter(a); }).length(); }, I don't see anything suspicious there either. For completeness, here are the insertBefore and insertAfter methods:- ePrototype.insertBefore = function(el) { var parent = el.parentNode; if (parent) { parent.insertBefore(this.element(), el); } return this; }; ePrototype.insertAfter = function(el) { var next = el.nextSibling; var parent = el.parentNode; if (parent) { if (next) { parent.insertBefore(this.element(), next); } else { parent.appendChild(this.element()); } } return this; }; This is from the latest code, but not much of that stuff has changed of late. I don't see anything there that would cause issues in IE6 and my testing (with my page, as well as the one you reported as problematic) with the (possibly bogus) IETester bears that out. I even tested IE5.5 (or some approximation of it). The 5.5 results were wonderfully affirming (virtually all blacked out except the last two columns). :) So, can anyone see a problem in a real IE6 installation? I don't have access to one right at the moment and it irritates me to think I could have missed something. I'll be the first to admit if I did something stupid. But I really don't think that is the case at this point (though was wondering there for a bit).
From: Scott Sauyet on 18 Feb 2010 21:17
On Feb 18, 5:09 pm, David Mark <dmark.cins...(a)gmail.com> wrote: > Scott Sauyet wrote: >> http://scott.sauyet.com/Javascript/Test/taskspeed/2010-02-15a/ > > I just ran it in (IETester) IE6. The only error I see is at the end > (dojo is undefined). LOL. > > Of course, IETester is just some black box that could be doing anything > behind the scenes. I normally test with a real IE6 installation. Just > so happens that that is not convenient for me at the moment and I want > to get to the bottom of this. So, what errors are you seeing? Unfortunately, all that shows up in the title of the cell is: [object Error] which is not at all useful. I made a simpler version just testing My Library in order to try to run this down. It's at http://scott.sauyet.com/Javascript/Test/taskspeed/2010-02-17a/ It's happening for me on my home machine as well as my work one. I'm using Multiple IEs [1], which installs multiple versions of IE on a Windows machine. I've never run into any issues beyond the many versions occasionally sharing some settings, but it could be a problem with this version. -- Scott ____________________ [1] http://tredosoft.com/Multiple_IE |