Writing Efficient JavaScript discusses common issues that can slow down JavaScript performance and provides recommendations to address them. It covers scope management, data access, loops, DOM manipulation, and avoiding browser limits. The document recommends minimizing scope chain lookups, storing frequently accessed properties in local variables, optimizing loops, performing DOM changes off-document to reduce reflows, and using setTimeout() to avoid locking up the browser thread.
J2EE Web Tier Structure and Framework MVC. This presentation includes J2EE web tier framework design. model-View-controller(MVC) is briefly described in the slides.Model View controller separates the development of an application modules in three main categories: one for the application model with its data representation and business logic, the second for views that provide data presentation and user input, the third for a controller to dispatch requests and control flow.
J2EE Web Tier Structure and Framework MVC. This presentation includes J2EE web tier framework design. model-View-controller(MVC) is briefly described in the slides.Model View controller separates the development of an application modules in three main categories: one for the application model with its data representation and business logic, the second for views that provide data presentation and user input, the third for a controller to dispatch requests and control flow.
Slide deck for talk at IETF#92 (Dallas, March 2015) at the IETF Light-Weight Implementation Guidance (lwig) working group about the performance of cryptographic algorithms on ARM processors.
.NET 7 is loaded with new features and specially covering Minimal API features like Endpoint Filters,
Route groups, Authentication Improvements, Endpoint metadata providers and
Unit Testing. This PPT covers the basics of API, Minimal API and new features.
If you're new to API and Minimal, you should be able to understand everything.
In this quality assurance training session, you will learn Selenium WebDriver Testing. Topics covered in this course are:
• Overview of Selenium WebDriver
• Get Selenium WebDriver Java
• Selenium – JAVA Configuration
• WebDriver in Different Browsers
• Open Application
• Browser Settings
• Locating Elements
• Object Identification Methods
• Locator ID, Name
• Locators –LinkText, partialLinkText, CSS, CSS
• Accessing different objects in application
• Switch Window
• Wait in WebDriver
• Verifications
• WebTable
To know more, visit this link: https://www.mindsmapped.com/courses/quality-assurance/software-testing-quality-assurance-qa-training-with-hands-on-exercises/
DevOps is powering the computing environments of tomorrow. When properly configured, the Splunk platform allows us to gain real-time visibility into the velocity, quality, and business impact of DevOps-driven application delivery across all roles, departments, process, and systems. Splunk can be used by DevOps practitioners to provide continuous integration/deployment and the real-time feedback to help the organization with their operational intelligence. Join us for a exciting talk about Splunk’s current approach to DevOps, and for examples of how Splunk is being used by customers today to transform DevOps initiatives.
Writing code as an individual and writing code as part of the team are two very different things. Learn the tips and tricks for writing JavaScript code as part of the team so that your code will continue to work for years to come.
Slide deck for talk at IETF#92 (Dallas, March 2015) at the IETF Light-Weight Implementation Guidance (lwig) working group about the performance of cryptographic algorithms on ARM processors.
.NET 7 is loaded with new features and specially covering Minimal API features like Endpoint Filters,
Route groups, Authentication Improvements, Endpoint metadata providers and
Unit Testing. This PPT covers the basics of API, Minimal API and new features.
If you're new to API and Minimal, you should be able to understand everything.
In this quality assurance training session, you will learn Selenium WebDriver Testing. Topics covered in this course are:
• Overview of Selenium WebDriver
• Get Selenium WebDriver Java
• Selenium – JAVA Configuration
• WebDriver in Different Browsers
• Open Application
• Browser Settings
• Locating Elements
• Object Identification Methods
• Locator ID, Name
• Locators –LinkText, partialLinkText, CSS, CSS
• Accessing different objects in application
• Switch Window
• Wait in WebDriver
• Verifications
• WebTable
To know more, visit this link: https://www.mindsmapped.com/courses/quality-assurance/software-testing-quality-assurance-qa-training-with-hands-on-exercises/
DevOps is powering the computing environments of tomorrow. When properly configured, the Splunk platform allows us to gain real-time visibility into the velocity, quality, and business impact of DevOps-driven application delivery across all roles, departments, process, and systems. Splunk can be used by DevOps practitioners to provide continuous integration/deployment and the real-time feedback to help the organization with their operational intelligence. Join us for a exciting talk about Splunk’s current approach to DevOps, and for examples of how Splunk is being used by customers today to transform DevOps initiatives.
Writing code as an individual and writing code as part of the team are two very different things. Learn the tips and tricks for writing JavaScript code as part of the team so that your code will continue to work for years to come.
Slides from a three hour tutorial presented at XTech 2008 on the 6th of May. See also <a href="http://simonwillison.net/static/2008/xtech/">the supporting notes</a>.
HTML5 is all the rage with the cool kids, and although there's a lot of focus on the new language, there's lots of interesting new JavaScript APIs both in the HTML5 spec and separated out. This presentation will take you through demos and code behind the new JavaScript APIs, and explore where these features can be used
High Performance JavaScript - Fronteers 2010Nicholas Zakas
For much of its existence, JavaScript has been slow. No one complained until developers created complex web applications with thousands of lines of JavaScript code. Although newer JavaScript engines have improved the situation, there's still a lot to understand about what makes JavaScript slow and what you can do to speed up your code.
High Performance JavaScript (YUIConf 2010)Nicholas Zakas
Ever wonder why the page appears frozen or why you get a dialog saying, "this script is taking too long"? Inside of the browser, JavaScript and the page's UI are very intertwined, which means they can affect each other and, in turn, affect overall page performance. Ensuring the fastest execution time of JavaScript code isn't about geek cred, it's about ensuring that the user experience is as fast and responsive as possible. In a world where an extra second can cost you a visitor, sluggishness due to poor JavaScript code is a big problem. In this talk, you'll learn what's going on inside the browser that can slow JavaScript down and how that can end up creating a "slow page". You'll also learn how to overcome the conspiracy against your code by eliminating performance bottlenecks.
Anything that can be written in JavaScript, will eventually be written in JavaScript. First client side web apps, then server side programs and now you can control hardware, embedded devices and even flying robots with JavaScript.
We'll look at how you can get started writing JavaScript for Ardunio and Raspberry Pi to read sensors and control servos and build your own JavaScript powered robots.
Presented at http://2013.full-frontal.org/
My talk at the January 21, 2009 Mountain View JavaScript Meetup about the performance of JavaScript variables relative to their position in the scope chain.
Performance Of Web Applications On Client MachinesCurelet Marius
Performance of Web applications on client machines. This paper refers to the performance of Web browsers and applications in general and of JavaScript code on the client machine.
Understanding the Rails web model and scalability options.toster
Rails стал отличным ответом на требования многих лет опыта использования классической процессной модели веб-запросов. Такая модель все еще является наиболее надежной и простой для понимания и контроля. Но новое поколение высокодинамичных и интерактивных веб приложений требует принципиально новых требований к масштабированию. Одним из ответов на такие требования может стать сервис Pusher.com, который, в числе прочих вариантов решений, будет рассмотрен в этом докладе
After consulting with several companies on performance related issues, it became clear that one of the biggest performance issues facing websites today is the sheer amount of JavaScript needed to power the page. The demand for more interactive and responsive applications has driven JavaScript usage through the roof. It’s quite common for large sites to end up with over 1 MB of JavaScript code on their page even after minification. But do today’s web applications really need that much JavaScript?
Believe it or not, accessibility is more than just screen readers. There's a whole group of users who only use a keyboard (without a mouse). Learn how to make the web a friendly place for all kinds of people by ensuring keyboard accessibility.
An update to the Scalable JavaScript presentation of 2009. Describes how to piece together a JavaScript application framework designed for maintainability.
Writing JavaScript as a hobby and writing JavaScript as a job are two very different things. Learn some common practices for making your JavaScript friendly to a team environment.
For much of its existence, JavaScript has been slow. No one complained until developers created complex web applications with thousands of lines of JavaScript code. Although newer JavaScript engines have improved the situation, there’s still a lot to understand about what makes JavaScript slow and what you can do to speed up your code.
As browsers explode with new capabilities and migrate onto devices users can be left wondering, “what’s taking so long?” Learn how HTML, CSS, JavaScript, and the web itself conspire against a fast-running application and simple tips to create a snappy interface that delight users instead of frustrating them.
In the beginning, progressive enhancement was simple: HTML layered with CSS layered with JavaScript. That worked fine when there were two browsers, but in today's world of multiple devices and multiple browsers, it's time for a progressive enhancement reboot. At the core is the understanding that the web is not print - the same rules don't apply. As developers and consumers we've been fooled into thinking about print paradigms for too long. In this talk, you'll learn just how different the web is and how the evolution of progressive enhancement can lead to better user experiences as well as happier developers and users.
This deck is a conference-agnostic one, suitable to be shown anywhere without site-specific jokes!
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Nicholas Zakas
In the beginning, progressive enhancement was simple: HTML layered with CSS layered with JavaScript. That worked fine when there were two browsers, but in today's world of multiple devices and multiple browsers, it's time for a progressive enhancement reboot. At the core is the understanding that the web is not print - the same rules don't apply. As developers and consumers we've been fooled into thinking about print paradigms for too long. In this talk, you'll learn just how different the web is and how the evolution of progressive enhancement can lead to better user experiences as well as happier developers and users.
YUI Test The Next Generation (YUIConf 2010)Nicholas Zakas
JavaScript testing has grown by leaps and bounds over the past few years. When YUI Test was first introduced in 2007, it was just the first step in a long process of bringing test-driven development to the front end. YUI Test evolved with the release of YUI 3 to introduce mock objects as feedback indicated a need. As feedback continued to come in, YUI Test continued to evolve. Learn about the next version of YUI Test, how it makes testing any JavaScript code easier, and the brand new tools that allow you to integrate your testing into a continuous integration environment.
High Performance JavaScript - WebDirections USA 2010Nicholas Zakas
Ever wonder why the page appears frozen or why you get a dialog saying, “this script is taking too long”? Inside of the browser, JavaScript and the page’s UI are very intertwined, which means they can affect each other and, in turn, affect overall page performance. Ensuring the fastest execution time of JavaScript code isn’t about geek cred, it’s about ensuring that the user experience is as fast and responsive as possible. In a world where an extra second can cost you a visitor, sluggishness due to poor JavaScript code is a big problem. In this talk, you’ll learn what’s going on inside the browser that can slow JavaScript down and how that can end up creating a “slow page”. You’ll also learn how to overcome the conspiracy against your code by eliminating performance bottlenecks.
Overhauling one of the most visited web sites in the world is a major task, and add on top of it the pressure of keeping performance the same while adding a ton of new features, and you have quite a task. Learn how the Yahoo! homepage team achieved performance parity with the previous version even while adding a ton of new features.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
1. Writing Efficient JavaScript
What makes JavaScript slow and what to do about it
Nicholas C. Zakas
Principal Front End Engineer, Yahoo!
Velocity – June 2009
2. Who's this guy?
• Principal Front End Engineer, Yahoo! Homepage
• YUI Contributor
• Author
14. Didn't Matter Then
• JavaScript used for simple form validation or
image hovers
• Slow Internet connections
– People expected to wait
• Click-and-go model
• Each page contained very little code
16. Matters Now
• Ajax and Web 2.0
• More JavaScript code than ever before
• Fast Internet connections
– People have come to expect speed
• Applications that stay open for a long time
– Gmail
– Facebook
• Download and execute more code as you interact
19. Disclaimer
What follows are graphic depictions of the parts of JavaScript that
are slow. Where appropriate, the names of the offenders have been
changed to protect their identities. All of the data, unless otherwise
noted, is for the browsers that are being used by the majority of web
users right now, in 2009. The techniques presented herein will
remain valid at least for the next 2-3 years. None of the techniques
will have to be reversed once browsers with super powers are the
norm and handle all optimizations for us. You should not take the
techniques addressed in this presentation as things you should do all
of the time. Measure your performance first, find the bottlenecks,
then apply the appropriate techniques to help your specific
bottlenecks. Premature optimization is fruitless and should be
avoided at all costs.
23. When a Function Executes
• An execution context is created
• The context's scope chain is initialized with the
members of the function's [[Scope]] collection
• An activation object is created containing all local
variables
• The activation object is pushed to the front of the
context's scope chain
32. Closures
• The [[Scope]] property of closures begins with at
least two objects
• Calling the closure means three objects in the
scope chain (minimum)
36. Recommendations
• Store out-of-scope variables in local variables
– Especially global variables
• Avoid the with statement
– Adds another object to the scope chain, so local
function variables are now one step away
– Use local variables instead
• Be careful with try-catch
– The catch clause also augments the scope chain
• Use closures sparingly
• Don't forget var when declaring variables
39. Places to Access Data
• Literal value
• Variable
• Object property
• Array item
40. Data Access Performance
• Accessing data from a literal or a local variable is
fastest
– The difference between literal and local variable is
negligible in most cases
• Accessing data from an object property or array
item is more expensive
– Which is more expensive depends on the browser
41. Data Access
100
90
80
70
Time (ms) per 200,000 reads
60
Literal
Local Variable
50
Array Item
Object Property
40
30
20
10
0
Firefox 3 Firefox 3.5 Chrome 1 Chrome 2 Internet Internet Opera 9.64 Opera 10 Safari 3.2 Safari 4
Beta 4 Explorer 7 Explorer 8 Beta
43. Property Depth (Reads)
250
200
Firefox 3
Time (ms) per 200,000 reads
Firefox 3.5 Beta 4
150 Chrome 1
Chrome 2
Internet Explorer 7
Internet Explorer 8
Opera 9.64
100 Opera 10 Beta
Safari 3.2
Safari 4
50
0
1 2 3 4
Property Depth
44. Property Notation
• Difference between object.name and
object[“name”]?
– Generally no
– Exception: Dot notation is faster in Safari
45. Recommendations
• Store these in a local variable:
– Any object property accessed more than once
– Any array item accessed more than once
• Minimize deep object property/array item lookup
53. What Does Matter?
• Amount of work done per iteration
– Includes terminal condition evaluation and
incrementing/decrementing
• Number of iterations
• These don't vary by loop type
63. Easy Fixes
• Eliminate object property/array item lookups
• Combine control condition and control variable
change
– Work avoidance!
64. Things to Avoid for Speed
• ECMA-262, 3rd Edition:
– for-in
nd
• ECMA-357, 2 Edition:
– for each
• ECMA-262, 5th Edition:
– array.forEach()
• Function-based iteration:
– jQuery.each()
– Y.each()
– $each
– Enumerable.each()
65. • Introduces additional function
• Function requires execution (execution context
created, destroyed)
• Function also creates additional object in scope
chain
8x
72. HTMLCollection Objects
• Look like arrays, but aren't
– Bracket notation
– length property
• Represent the results of a specific query
• The query is re-run each time the object is
accessed
– Include accessing length and specific items
– Much slower than accessing the same on arrays
– Exceptions: Opera, Safari
75. HTMLCollection Objects
• Minimize property access
– Store length, items in local variables if used frequently
• If you need to access items in order frequently,
copy into a regular array
76. function array(items){
try {
return Array.prototype.slice.call(items);
} catch (ex){
var i = 0,
len = items.length,
result = Array(len);
while (i < len){
result[i] = items[i];
i++;
}
}
return result;
}
78. Repaint...is what happens
whenever something is made
visible when it was not
previously visible, or vice
versa, without altering the
layout of the document.
- Mark 'Tarquin' Wilton-Jones, Opera
79. When Repaint?
• Change to visibility
• Formatting styles changed
– Backgrounds
– Borders
– Colors
– Anything that doesn't change the size, shape, or
position of the element but does change its
appearance
• When a reflow occurs
80. Reflow is the process by
which the geometry of the
layout engine's formatting
objects are computed.
- Chris Waterson, Mozilla
81. When Reflow?
• Initial page load
• Browser window resize
• DOM nodes added or removed
• Layout styles applied
• Layout information retrieved
82. Addressing Repaint & Reflow
• Perform DOM changes off-document
• Groups style changes
• Cache retrieved layout information
84. Off-Document Operations
• Fast because there's no repaint/reflow
• Techniques:
– Remove element from the document, make changes,
insert back into document
– Set element's display to “none”, make changes,
set display back to default
– Build up DOM changes on a
DocumentFragment then apply all at once
85. DocumentFragment
• A document-like object
• Not visually represented
• Considered to be owned by the document from
which it was created
• When passed to appendChild(), appends
all of its children rather than itself
89. What to do?
• Minimize changes on style property
• Define CSS class with all changes and just
change className property
• Set cssText on the element directly
94. What to do?
• Minimize access to layout information
• If a value is used more than once, store in local
variable
95. Speed Up Your DOM
• Be careful using HTMLCollection objects
• Perform DOM manipulations off the document
• Group CSS changes to minimize repaint/reflow
• Be careful when accessing layout information
98. Call Stack
• Controls how many functions can be executed in
a single process
• Varies depending on browser and JavaScript
engine
• Errors occur when call stack size is exceeded
100. Call Stack Overflow
• Error messages
– IE: “Stack overflow at line x”
– Firefox: “Too much recursion”
– Safari: “Maximum call stack size exceeded.”
– Opera: “Abort (control stack overflow)”
– Chrome: n/a
• Browsers throw a regular JavaScript error when
this occurs
– Exception: Opera just aborts the script
101. Runaway Script Timer
• Designed to prevent the browser from affecting
the operating system
• Limits the amount of time a script is allowed to
execute
• Two types of limits:
– Execution time
– Number of statements
• Always pops up a scary dialog to the user
• Exception: Opera has no runaway timer
106. Runaway Script Timer Limits
• Internet Explorer: 5 million statements
• Firefox: 10 seconds
• Safari: 5 seconds
• Chrome: Unknown, hooks into normal crash
control mechanism
• Opera: none
107. The Browser UI Thread
• Shared between JavaScript and UI updates
• Only one can happen at a time
• Page UI frozen while JavaScript is executing
• A queue of actions is kept containing what to do next
108. Browser Limit Causes
• Too much DOM interaction
– Repaint & reflow
• Too much recursion
• Long-running loops
119. Browser Limit Causes
• Too much DOM interaction
– Repaint & reflow
• Too much recursion
• Long-running loops
– Too much per iteration
– Too many iterations
– Lock up the browser UI
120. setTimeout()
• Schedules a task to be added to the UI queue later
• Can be used to yield the UI thread
• Timer functions begin with a new call stack
• Extremely useful for avoiding browser limits
124. Avoiding Browser Limits
• Mind your DOM
– Limit repaint/reflow
• Mind your recursion
– Consider iteration or memoization
• Mind your loops
– Keep small, sprinkle setTimeout() liberally if needed