Huge Array Performance - Re-calculate The Speed For Each Movement?
Nov 8, 2011
I have got a div-container the size of the window itself. So its relativly big.This in turn has a child-div-container which is substantially larger.This 2nd div-container is absolutely positioned in the first and shall now be scrolled using the mouse. Because for this Project i don't want scrollbars.If the mouse moves to the edge of the outer div, the inner div should move in the appropriate direction.For that the first container has a MouseMove-listener and depending on how close the mouse is at the edge, a scrolling-speed-variable is set.Sidenote: the speed has not a linear but a quadratic increase. The moving itself is not the problem, but the calculation.Because of the quadratic increase in speed the calculation is rather expensive.The question is now whether it would be more performant if i create two arrays (for x- and y-axis) in which I store the velocities for each pixel, or whether I re-calculate the speed for each movement.
That would mean, at a window size of 1200x700px I had two arrays. One with 1200 fields ald values and another with 700. And thats a relativly small resolution.In this way the calculation must be performed only once. After that I only need to read the velocities out of the arrays.
I'm attempting to design my first 'just-watch-it' canvas show, which fills in randomly each time you click start. Doing pretty well, but this is where I'm stumped:
I have an array of 10,000 coordinate pairs = absolute positions on my canvas. I have this monster array on its own 'page.js' and used a <link src="template.js .. to link it in the head of my 'canvas.html'
How do I instruct my script to make a working copy of it? I don't want to manipulate the template array, but my script needs to make a clone of it ...as what? a variable? an object? I don't know what functions to use. This clone will be manipulated and have indices removed one by one as areas are filled in on the canvas.
I am trying to complete a javascript application and am having problems with code similar to that show below.
Much testing has shown that Firefox finishes the code shown in around 0.25 secs but Internet Explorer 6 takes a massive 3.5 secs! Internet Explorer 7 gets it down to around 2 seconds - but that's still 8 times slower than Firefox and way unacceptable for my userbase.
Looking through the newsgroups there is some discussion around the differences between the way the two browsers handle arrays - but a performance differential such as this is just unbelievably dismal.
Unfortunately I need to continue to use arrays of objects and have to support the Internet Explorer client base. I have already added specification of the array size and also removed the use of array "push"ing - flattening the array is not really an option. Code:
There's no native linked list implementation in JS. I'm wondering if it would be worth it to implement one.
I'm using a lot of insertions and deletions with arrays of around length 5. How fast are insertions and deletions in JS native arrays compared to an optimized (but not native) linked list implementation in this situation? How about arrays of length 10?
i have a problem with the arrays.i have entered all the relevant arrays to calculate a list of cheap quotations but when clicking on the submit button it doesnt do nothing.when clicking on the submit button i want it to bring up the list of quotations based on the data entered in the form..
I need to have the user input 5 set of; miles, and gallons used to calculate mpg. Also need to total miles and gallons used. I have the array ok, but i cannot remember how to figure mpg for each array element. this is what i have. everything works execpt the mpg for each array element.
I developed a plugin which loads some content via AJAX. Every time the content is loaded I need to bind to certain elements ( let's say the elements with 'bar' as classname ) the mouseover and mouseout elements. I achieved it by using the ' live() ' instruction.Now my problem comes when I need to scan every element which has 'bar' as classname and do some calulcations on it (they are over 600). I tried to do like this
$container.find('.bar').live('customevent', function() { // do some stuff });
I am using jquery autocomplete combobox I load more than 25000 data. I set minLength:3, delay: 700, When I start typing three characters, in the third character ie8 shows the "Stop running this script" how to handle this huge amount of data
I have wrote this for a friend in another forum, But I thought it might be useful, at least for start for similar apllication.
Tho code scrolles the page if mouse moves in the 1/3 zones (left, right, up, down) of the page (clientWidth/Height). It might be modify (a better ideea, since I don't like scrolled full pages - at least the X-scrolled) for scrollable frames, iframes or layers). I would be grateful if any comments will simplify he code or will help me to build a similar application based on simple position of the mouse (not only on mousemove).
<html> <head> <script> function setUp() { if( typeof( window.innerWidth ) == 'number' ) { /* Non-IE */ winW = window.innerWidth; winH = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { /* IE 6+ in 'standards compliant mode' */ winW = document.documentElement.clientWidth; winH = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { /*IE 4 compatible*/ winW = document.body.clientWidth; winH = document.body.clientHeight; } setL = winW/3;// zone left first 1/3 from client width setR = winW*2/3;// zone right third 1/3 from client width setU = winH/3;// zone up first 1/3 from client height setD = winH*2/3;// zone down third 1/3 from client width pix=4// scroll speed control pixels/mousemove } function checkS(e){ // capture the mouse position var posx = 0; var posy = 0; if (!e) var e = window.event; if (e.pageX || e.pageY) { posx = e.pageX; posy = e.pageY; } else if (e.clientX || e.clientY) { posx = e.clientX; posy = e.clientY; } // initialize the scrollBy parameters x=0; y=0; // set the new scrollBy parameters if(posx<setL){ x=-pix; } if(posx>setR){ x=pix; } if(posy<setU){ y=-pix; } if(posy>setD){ y=pix; } // scroll window.scrollBy(x,y); } </script> </head> <body onload="setUp()" onmousemove="checkS(event)"> <table width="1200" height="900" border="0" cellpadding="0" cellspacing="0"> <tr> <td align="center" valign="middle" bgcolor="#CCCCCC">blabla</td> </tr> </table> </body> </html>
This simple example shows where my problem is. It works fine when all mouse buttons are released, and also if a button is pressed outside the image. But if a button is pressed inside the picture it'll not call onmouseout when the mouse is brought outside the picture. The worst is it'll never call it, leaving the button stuck pressed forever until mouse is moved over it again.
I just noticed if I place the picture inside an A tag it does work fine then, but I don't need an A element here. Moreover, this fix appears to work only for IE6, IE4 still doesn't work properly. I'm asking if there's some other way to correct this. I'm also making this compatible with Netscape 4.5, and the presence of an A element changes the event.target.
The fact is I can't seem to disable the default drag'n drop of IE with pictures. Netscape 4.5 appears to work perfectly. By placing onmousemove="return false;" in BODY I aboid the cursor change in IE but nothing else.
I'm basically creating a script that wiill move a div from one place to another based on the width of the browser. The script I've made does do this however I wanted to fade to old position out then fade the new one in and this is where i got into trouble. The div just keeps flashing, i'm sure that it's something really simple that with expirience would easily be solved.
I need an image to move from outside the viewed space, from somwhere on the page where users cannot hav acces, let's say from x position of -439px to 0px, so that the image looks like entering the window. And I need to do this after the user clicks a piece of text that is already on the screen. How can I do that ? In what tag should I include the image ? where should I put de event handler/ listener ? I know I need to change the CSS atributes but how. I tried this and it didn't work in Firefox nor in IE. THE HTML FILE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>
I am trying to move each cell content from one table to another table. I do not want to lose the value of each cells in table1, but just to show how I got table2 from table1. I would like to show/animate the movement. So when the user clicks the button the data from table1 will scroll towards table2.
The hovered class just adds a background image. When I quickly hover over the list, sometimes the background image gets stuck so it seems like the "hovered" class never gets removed.
In website i am having popup window.Whenever refreshiung the page popup window will come Its working now and i want to move that popup window based on the mouse movement can anyone give some sample code for this
I need to move the entire contents of one div to a sibling div. At present I'm just doing (assuming the 2 divs are called 1st and 2nd):
What I need to know is if this is the quickest means (in performance terms) of doing this as I will be performing the operation regularly and on a large number of nodes and it's in an area where the UX really can't stutter ?
I have some code which creates an extremely long table row, and I've been able to clean it up to a point where my performance is fairly decent. What I am trying to figure out is if its better in terms of speed to use divs as opposed to the really long table row. I didn't really find much on this topic online, so thought I'd ask out here.
I'm using clueTip 1.0.6 and jQuery 1.4.2. The tool-tip will appear if I mouse over the cell slowly. Fast mouse over the cell does not bring up the tool-tip. But it will if I mouse over it again (fast one). It's happening in IE, Chrome and FF.
This might be more easily explained just by showing you the code. Basically, this is a function within a large class dealing with moving table rows around, and works in Chrome but no where else. Chrome understands "event.clientY" in this context while other browsers throw "event is undefined". Y is a correctly set global indicating the clientY of where the original click occurred.
Code:
set_bgcolor = function (t, r) { var tr, i; var currentY = pointer.y = event.clientY; tr = tables[t].rows[r];
[Code]....
So, I'm just trying to get event.clientY to work for all browsers in this case, where an event handler might not easily be passed to the function.
Details:
I'm using third-party code to move rows of a table around. [URL]
It's a large piece of drag and drop code, but I'm trying to edit it so that at a point near the code's completion, it says whether the initial mouse click was above or below where the cursor has been dragged to. "Why" is a long story, but suffice it to say that there are functional differences when dragging the row up rather than down (up puts it above the hovered over row, while below puts in under that row), and I want to place a border line in there so that users know exactly where the row is going.
So you probably don't have to look at the whole code (which I can provide if you'd like), but my basic question is, how do I get the function to know where the current mouse pointer is this many levels deep in code. I could try to pass the event through all the layers, but I'm not good enough at javascript to make that work, and I'm not sure it would. Isn't the event the keypress (and not the current position?).