I got an email from someone at Netscape. He made a valid point that by trying to write the computed values to the textarea after each loop I was really testing the browsers ability to use JavaScript to manipulate UI widgets, not the actual speed of the JavaScript interpreter. So, version 3.0 is the result. Now, I write the values just once after all the computations have been made. It makes a huge difference for most of the sluggish browsers in the previous tests.
BUT, the question still remains ... why is Netscape such a dog at changing the form field contents?
letters = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"); colors = new Array("red","blue","green","orange","purple","yellow","brown","black","white","gray"); function doTest() { sob = document.forms[0].timeStart; eob = document.forms[0].timeEnd; dob = document.forms[0].timeDiff; rob = document.forms[0].results; // clear values sob.value = ""; eob.value = ""; dob.value = ""; rob.value = ""; endResult = ""; nob = new Date(); start = nob.getTime(); sob.value = nob.toUTCString(); // do some math for (i=0;i<5000;i++) { tmp = Math.round(i*Math.SQRT1_2); addResult(tmp); } // do some strings and array stuff for (j=0;j<colors.length;j++) { fav = "My favorite color is " + colors[j] + ".\n"; addResult(fav); favArray = fav.split(" "); for (l=0;l<favArray.length;l++) { addResult(favArray[l]); } } // do some more strings and array stuff for (k=0;k<5000;k++) { // make up email address name = makeName(8); email = name + "@mac.com"; addResult(email); } rob.value = endResult; nob = new Date(); end = nob.getTime(); eob.value = nob.toUTCString(); dob.value = (end - start)/1000; } function makeName(n) { tmp = ""; for (i=0;i<n;i++) { l = Math.floor(26*Math.random()); tmp += letters[l]; } return tmp; } function addResult(r) { endResult += "\n" + r; } |