jQuery parallax site (on scroll)
The jQuery documentation offers the best advice:


  Event performance
  
  In most cases, an event such as click occurs infrequently and performance is not a significant concern. However, high frequency events such as mousemove or scroll can fire dozens of times per second, and in those cases it becomes more important to use events judiciously. Performance can be increased by reducing the amount of work done in the handler itself, caching information needed by the handler rather than recalculating it, or by rate-limiting the number of actual page updates using setTimeout.


Obviously it would be ideal if you could move the calculations outside the event handler to reach the desired performance, but that may not be possible in this case. So to expand on the rate-limiting approach, there are 2 ways you could go about it:


Call event handler after the user has finished scrolling (hasn't scrolled for some set amount of time):

var timer = null;
$(window).scroll(function () {
  if (timer) {
    clearTimeout(timer);
  }

  timer = setTimeout(function() {
    timer = null;

    // your event handling logic here
  }, 50);
});

Call event handler immediately after scrolling, with a minimum delay between scroll events:

var justExecuted = false;
$(window).scroll(function() {
  if(justExecuted) {
    return;
  }

  // your event handling logic here

  justExecuted = true;
  setTimeout(function() {
    justExecuted = false;
  }, 50);
});