From: Scott Sauyet on
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
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
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
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
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