473,549 Members | 3,109 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Why does this use all cpu in FireFox?

I have no clue why below code (found it somewhere and altered it a wee
bit to my needs) will run without problem in both IE and Mozilla FireFox
1.0 but in the latter it takes up close to 100% cpu. It does check for
type of browser, and indeed all works fine apart from that ridiculous
amount of cpu taken.

If you want to see if it does so in your firefox/xp too, it's embedded
in my homepage (www.westerterp.com)

Can anyone explain why this could be the case ? Probably not everything
is relevant here but I think posting just a snippet here would be rather
meaningless. If not, sorry.

Schraalhans Keukenmeester
dCol='ff0000';//date colour.
fCol='ff0000';//face colour.
sCol='ff0000';//seconds colour.
mCol='ff0000';//minutes colour.
hCol='ff0000';//hours colour.
ClockHeight=40;
ClockWidth=40;
ClockFromMouseY =0;
ClockFromMouseX =100;

//Alter nothing below! Alignments will be lost!
d=new
Array("zondag", "maandag","dins dag","woensdag" ,"donderdag","v rijdag","zaterd ag");
m=new
Array("januari" ,"februari","ma art","april","m ei","juni","jul i","augustus"," september","okt ober","november ","december ");
date=new Date();
day=date.getDat e();
year=date.getYe ar();
if (year < 2000) year=year+1900;
TodaysDate=" "+d[date.getDay()]+" "+day+" "+m[date.getMonth()]+" "+year;
D=TodaysDate.sp lit('');
H='...';
H=H.split('');
M='....';
M=M.split('');
S='.....';
S=S.split('');
Face='I II III IV V VI VII VIII IX X XI XII';
font='Arial';
size=1;
speed=0.5;
ns=(document.la yers);
ie=navigator.us erAgent.toLower Case().indexOf( "msie") != -1
mz=(navigator.u serAgent.toLowe rCase().indexOf ("mozilla") != -1) && !ie
Face=Face.split (' ');
n=Face.length;
a=size*10;
ymouse=0;
xmouse=0;
scrll=0;
props="<font face="+font+" size="+size+" color="+fCol+"> <B>";
props2="<font face="+font+" size="+size+" color="+dCol+"> <B>";
Split=360/n;
Dsplit=360/D.length;
HandHeight=Cloc kHeight/4.5
HandWidth=Clock Width/4.5
HandY=-7;
HandX=-2.5;
scrll=0;
step=0.06;
currStep=0;
y=new Array();x=new Array();Y=new Array();X=new Array();
for (i=0; i < n; i++){y[i]=0;x[i]=0;Y[i]=0;X[i]=0}
Dy=new Array();Dx=new Array();DY=new Array();DX=new Array();
for (i=0; i < D.length; i++){Dy[i]=0;Dx[i]=0;DY[i]=0;DX[i]=0}
if (mz){
for (i=0; i < D.length; i++)
document.write( '<div id="mzDate'+i+' "
style="position :absolute;top:0 px;left:0px" height="'+a+'"
width="'+a+'">< center>'+props2 +D[i]+'</font></center></div>');
for (i=0; i < n; i++)
document.write( '<div id="mzFace'+i+' "
style="position :absolute;top:0 px;left:0px" height="'+a+'"
width="'+a+'">< center>'+props+ Face[i]+'</font></center></div>');
for (i=0; i < S.length; i++)
document.write( '<div id=mzSeconds'+i +'
style="position :absolute;top:0 px;left:0px" width="15" height="15"><fo nt
face=Arial size=3
color='+sCol+'> <center><b>'+ S[i]+'</b></center></font></div>');
for (i=0; i < M.length; i++)
document.write( '<div id=mzMinutes'+i +'
style="position :absolute;top:0 px;left:0px" width="15" height="15"><fo nt
face=Arial size=3
color='+mCol+'> <center><b>'+ M[i]+'</b></center></font></div>');
for (i=0; i < H.length; i++)
document.write( '<div id=mzHours'+i+'
style="position :absolute;top:0 px;left:0px" width="15" height="15"><fo nt
face=Arial size=3
color='+hCol+'> <center><b>'+ H[i]+'</b></center></font></div>');
}
if (ns){
for (i=0; i < D.length; i++)
document.write( '<layer name="nsDate'+i +'" top=0 left=0 height='+a+'
width='+a+'><ce nter>'+props2+D[i]+'</font></center></layer>');
for (i=0; i < n; i++)
document.write( '<layer name="nsFace'+i +'" top=0 left=0 height='+a+'
width='+a+'><ce nter>'+props+Fa ce[i]+'</font></center></layer>');
for (i=0; i < S.length; i++)
document.write( '<layer name=nsSeconds' +i+' top=0 left=0 width=15
height=15><font face=Arial size=3
color='+sCol+'> <center><b>'+ S[i]+'</b></center></font></layer>');
for (i=0; i < M.length; i++)
document.write( '<layer name=nsMinutes' +i+' top=0 left=0 width=15
height=15><font face=Arial size=3
color='+mCol+'> <center><b>'+ M[i]+'</b></center></font></layer>');
for (i=0; i < H.length; i++)
document.write( '<layer name=nsHours'+i +' top=0 left=0 width=15
height=15><font face=Arial size=3
color='+hCol+'> <center><b>'+ H[i]+'</b></center></font></layer>');
}
if (ie){
document.write( '<div id="'+('Od')+' "
style="position :absolute;top:0 px;left:0px"><d iv
style="position :relative">');
for (i=0; i < D.length; i++)
document.write( '<div id="'+('ieDate' )+'"
style="position :absolute;top:0 px;left:0;heigh t:'+a+';width:' +a+';text-align:center">' +props2+D[i]+'</B></font></div>');
document.write( '</div></div>');
document.write( '<div id="'+('Of')+' "
style="position :absolute;top:0 px;left:0px"><d iv
style="position :relative">');
for (i=0; i < n; i++)
document.write( '<div id="'+('ieFace' )+'"
style="position :absolute;top:0 px;left:0;heigh t:'+a+';width:' +a+';text-align:center">' +props+Face[i]+'</B></font></div>');
document.write( '</div></div>');
document.write( '<div id="'+('Oh')+' "
style="position :absolute;top:0 px;left:0px"><d iv
style="position :relative">');
for (i=0; i < H.length; i++)
document.write( '<div id="'+('ieHours ')+'"
style="position :absolute;width :16px;height:16 px;font-family:Arial;fo nt-size:16px;color :'+hCol+';text-align:center;fo nt-weight:bold">'+ H[i]+'</div>');
document.write( '</div></div>');
document.write( '<div id="'+('Om')+' "
style="position :absolute;top:0 px;left:0px"><d iv
style="position :relative">');
for (i=0; i < M.length; i++)
document.write( '<div id="'+('ieMinut es')+'"
style="position :absolute;width :16px;height:16 px;font-family:Arial;fo nt-size:16px;color :'+mCol+';text-align:center;fo nt-weight:bold">'+ M[i]+'</div>');
document.write( '</div></div>')
document.write( '<div id="'+('Os')+' "
style="position :absolute;top:0 px;left:0px"><d iv
style="position :relative">');
for (i=0; i < S.length; i++)
document.write( '<div id="'+('ieSecon ds')+'"
style="position :absolute;width :16px;height:16 px;font-family:Arial;fo nt-size:16px;color :'+sCol+';text-align:center;fo nt-weight:bold">'+ S[i]+'</div>');
document.write( '</div></div>')
}

(ns)?window.cap tureEvents(Even t.MOUSEMOVE):0;

function Mouse(evnt){
ymouse = 60
//(ns|mz)?evnt.pa geY+ClockFromMo useY-(window.pageYOf fset):event.y+C lockFromMouseY;
xmouse = 60 //(ns|mz)?evnt.pa geX+ClockFromMo useX:event.x+Cl ockFromMouseX;
}
(ns)?window.onM ouseMove=Mouse: document.onmous emove=Mouse;

function ClockAndAssign( ){
time = new Date ();
secs = time.getSeconds ();
sec = -1.57 + Math.PI * secs/30;
mins = time.getMinutes ();
min = -1.57 + Math.PI * mins/30;
hr = time.getHours() ;
hrs = -1.575 + Math.PI * hr/6+Math.PI*parse Int(time.getMin utes())/360;
if (ie){
Od.style.top=wi ndow.document.b ody.scrollTop;
Of.style.top=wi ndow.document.b ody.scrollTop;
Oh.style.top=wi ndow.document.b ody.scrollTop;
Om.style.top=wi ndow.document.b ody.scrollTop;
Os.style.top=wi ndow.document.b ody.scrollTop;
}

if (mz){
for (i=0; i < n; i++){
var F=document.getE lementById('mzF ace'+i)
F.style.top=y[i] + ClockHeight*Mat h.sin(-1.0471 +
i*Split*Math.PI/180)+scrll;
F.style.left=x[i] + ClockWidth*Math .cos(-1.0471 + i*Split*Math.PI/180);
}
for (i=0; i < H.length; i++){
var HL=document.get ElementById('mz Hours'+i)
HL.style.top=y[i]+HandY+(i*HandH eight)*Math.sin (hrs)+scrll;
HL.style.left=x[i]+HandX+(i*HandW idth)*Math.cos( hrs);
}
for (i=0; i < M.length; i++){
var ML=document.get ElementById('mz Minutes'+i)
ML.style.top=y[i]+HandY+(i*HandH eight)*Math.sin (min)+scrll;
ML.style.left=x[i]+HandX+(i*HandW idth)*Math.cos( min);
}
for (i=0; i < S.length; i++){
var SL=document.get ElementById('mz Seconds'+i)
SL.style.top=y[i]+HandY+(i*HandH eight)*Math.sin (sec)+scrll;
SL.style.left=x[i]+HandX+(i*HandW idth)*Math.cos( sec);
}
for (i=0; i < D.length; i++){
var DL=document.get ElementById('mz Date'+i)
DL.style.top=Dy[i] +
ClockHeight*1.5 *Math.sin(currS tep+i*Dsplit*Ma th.PI/180)+scrll;
DL.style.left=D x[i] +
ClockWidth*1.5* Math.cos(currSt ep+i*Dsplit*Mat h.PI/180);
}
}
if (ie||ns){
for (i=0; i < n; i++){
var F=(ns)?document .layers['nsFace'+i]:ieFace[i].style;
F.top=y[i] + ClockHeight*Mat h.sin(-1.0471 + i*Split*Math.PI/180)+scrll;
F.left=x[i] + ClockWidth*Math .cos(-1.0471 + i*Split*Math.PI/180);
}
for (i=0; i < H.length; i++){
var HL=(ns)?documen t.layers['nsHours'+i]:ieHours[i].style;
HL.top=y[i]+HandY+(i*HandH eight)*Math.sin (hrs)+scrll;
HL.left=x[i]+HandX+(i*HandW idth)*Math.cos( hrs);
}
for (i=0; i < M.length; i++){
var ML=(ns)?documen t.layers['nsMinutes'+i]:ieMinutes[i].style;
ML.top=y[i]+HandY+(i*HandH eight)*Math.sin (min)+scrll;
ML.left=x[i]+HandX+(i*HandW idth)*Math.cos( min);
}
for (i=0; i < S.length; i++){
var SL=(ns)?documen t.layers['nsSeconds'+i]:ieSeconds[i].style;
SL.top=y[i]+HandY+(i*HandH eight)*Math.sin (sec)+scrll;
SL.left=x[i]+HandX+(i*HandW idth)*Math.cos( sec);
}
for (i=0; i < D.length; i++){
var DL=(ns)?documen t.layers['nsDate'+i]:ieDate[i].style;
DL.top=Dy[i] +
ClockHeight*1.5 *Math.sin(currS tep+i*Dsplit*Ma th.PI/180)+scrll;
DL.left=Dx[i] + ClockWidth*1.5* Math.cos(currSt ep+i*Dsplit*Mat h.PI/180);
}
}
currStep-=step;
}
function Delay(){
scrll=(ns)?wind ow.pageYOffset: 0;
Dy[0]=Math.round(DY[0]+=((ymouse)-DY[0])*speed);
Dx[0]=Math.round(DX[0]+=((xmouse)-DX[0])*speed);
for (i=1; i < D.length; i++){
Dy[i]=Math.round(DY[i]+=(Dy[i-1]-DY[i])*speed);
Dx[i]=Math.round(DX[i]+=(Dx[i-1]-DX[i])*speed);
}
y[0]=Math.round(Y[0]+=((ymouse)-Y[0])*speed);
x[0]=Math.round(X[0]+=((xmouse)-X[0])*speed);
for (i=1; i < n; i++){
y[i]=Math.round(Y[i]+=(y[i-1]-Y[i])*speed);
x[i]=Math.round(X[i]+=(x[i-1]-X[i])*speed);
}
ClockAndAssign( );
setTimeout(('De lay')+'()',20);
}
if (ns||ie||mz)win dow.onload=Dela y;
Jul 23 '05 #1
4 2148

Schraalhans Keukenmeester <vo******@hetep ost.com> wrote in message
news:41******** **************@ news.xs4all.nl. ..
I have no clue why below code (found it somewhere and altered it a wee
bit to my needs) will run without problem in both IE and Mozilla FireFox
1.0 but in the latter it takes up close to 100% cpu. It does check for


<wild guess>
setTimeout(('De lay')+'()',20);
</wg>

Div animation in Gecko browsers is very slow, and you're asking for 50
updates per second.

Try: setTimeout(('De lay')+'()',200) ;

--
S.C.
Jul 23 '05 #2
Stephen Chalmers wrote:
Schraalhans Keukenmeester <vo******@hetep ost.com> wrote in message
news:41******** **************@ news.xs4all.nl. ..
I have no clue why below code (found it somewhere and altered it a wee
bit to my needs) will run without problem in both IE and Mozilla FireFox
1.0 but in the latter it takes up close to 100% cpu. It does check for

<wild guess>
setTimeout(('De lay')+'()',20);
</wg>

Div animation in Gecko browsers is very slow, and you're asking for 50
updates per second.

Try: setTimeout(('De lay')+'()',200) ;

--
S.C.

Stephen,

Thanks for your input. I took another look at the script, but the delay
is only used once at the start of the script. But your pointer to Gecko
browsers being slow at div animation may be something valuable. I'll
have another go through the script.

Do you or anyone else know about some (good) profilers for Javascript ?
Perhpas that would be helpful here.

Thanks!
Best wishes
Schraalhans
Jul 23 '05 #3
Schraalhans Keukenmeester wrote:
I have no clue why below code (found it somewhere and altered it a wee
bit to my needs) will run without problem in both IE and Mozilla FireFox
1.0 but in the latter it takes up close to 100% cpu. It does check for
type of browser, and indeed all works fine apart from that ridiculous
amount of cpu taken.

[snip]

Ok, so I admit I'm guessing because there was a lot of code to look
through and its New Year's Eve... but you use timeouts a lot, which
Firefox takes a long time and a lot of CPU to deal with. That could be
one aspect. You also set absolutely tons of CSS styles in code, which
would be far better set in a standard CSS file and just the specific
'class="..."' set in the code.
Jul 23 '05 #4
Hey!

You use alot of sin/cos functions inside the loop. Try to put them outside
the loop where you can, and you won't have this problem. In my experience,
MSIE is very slow with sin/cos functions, so you should "simplify" the use
of them.

Example:

loop()
{
a = x + Math.sin ( angle * rad ) * dist;
}

Instead:

var sinCal = Math.sin ( angle * rad );
loop()
{
a = x + sinCal * dist;
}

The example might not be perfectly applicable, but you might understand what
I mean. If the angle is changed, then you can run a function to update the
angles separately.

Optimizing will bring down the cpu usage.

I have scripts which run very smoothly with setTimeout ( "func()", 25 ),
where they are heavily optimized.
Hogne T.

Jul 23 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

7
5175
by: Todd Cary | last post by:
I inherited an application where the Flyout works in Firefox but not in IE. My JavaScript background is sparse, so I am not sure how to approach the problem. Any suggestions are welcomed! The performance can be viewed at http://209.204.172.137/casesearch/php/all.php Here is the base JavaScript:
7
6369
by: TLM | last post by:
I am trying to build a web application that will contain links to files on a users local computer. I am assuming that the files will be in a known location and can display in a browser window. I have my ASP.NET application building links along the lines of file://c:/<path to file>
7
2898
by: sonnystarks | last post by:
Page construction in progress: http://www.sdisplay.info/test/ Firefox does not recognize background image referred to on styles.css IE sees it with no problem. What is the problem? Thanx,
11
3415
by: minnesotti | last post by:
Hi there, I subscribed to a photographic pictures-hosting website which is heavy on JavaScript. My preferred latest browser Mozilla Firefox does not work with it -- no pictures are displayed and no buttons react to clicking. The website's helpdesk says it should work with Firefox, and could not offer any more advices. The JavaScript Console...
5
77575
by: antonyliu2002 | last post by:
Hi, It looks like so many people are having problems with the javascript submit in firefox. I searched around, but haven't found a solution yet. Mostly, people were saying, try this or try that or maybe blah blah or why do you wanna do that blah blah. I haven't seen a solution to this problem. OK, I am trying to share session objects...
7
4634
by: Xah Lee | last post by:
Look at this page http://xahlee.org/emacs/wrap-url.html Look at it in Firebox, look at it in Safari, in Opera, and look at it in Microsoft Internet Explorer. The only fucked up case, is Firefox. Namely, that it does not respect the font used when dealing with «width:80ex». The way to test this visually, is by this code: <pre...
7
2319
by: mavigozler | last post by:
IE7 does not appear to set an event on contained text inside SPAN elements whose 'onclick', 'onmouseover', and 'onmouseout' events, defying the HTML recommendation. Firefox appears to conform. Is that so?
4
7712
by: th1421 | last post by:
Hi, I'm new to FireFox. I am currently trying to convert my website to be compatible with it. Doing so Im trying to process some XML/XSLT pages (preferably without using JavaScript). When I view my XML pages using IE 6 or 7 it displays beautifully both accessed locally as through HTTP on my ISPs server where I put them using FTP. When I...
5
2137
by: Herkum | last post by:
I created this generic AJAX Handler to work with Firefox and IE. However, it seems that somewhere in updating Firefox to 2.0.0.9 that the handler assigned to onreadystatechange is no longer getting called. This still works for IE. Can someone help me add to this so that I can get it working with Firefox again? var ASYNCH = true;...
29
3288
by: zalek | last post by:
I am writing application with Ajax in sync mode - xmlHttp.open("GET", url, false). I noticed that in FireFox handler doesn't starts. It starts when I use xmlHttp.open("GET", url,true). I need to use it in sync mode. Any ideas what can I do? Thanks, Zalek.
0
7520
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, well explore What is ONU, What Is Router, ONU & Routers main...
0
7956
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
1
7470
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
6041
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development projectplanning, coding, testing, and deploymentwithout human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
1
5368
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupr who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
3498
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
0
3480
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
1936
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1058
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.