A walkthrough of various application performance tuning tools and a good workflow for where to start, from a presentation at WindyCityRails 2011 in Chicago, IL.
See the video, and more Web and Ruby/Rails Performance info at www.RailsPerformance.com
-John McCaffrey
Web Performance tuning presentation given at http://www.chippewavalleycodecamp.com/
Covers basic http flow, measuring performance, common changes to improve performance now, and several tools and techniques you can use now.
improving the performance of Rails web ApplicationsJohn McCaffrey
This presentation is the first in a series on Improving Rails application performance. This session covers the basic motivations and goals for improving performance, the best way to approach a performance assessment, and a review of the tools and techniques that will yield the best results. Tools covered include: Firebug, yslow, page speed, speed tracer, dom monster, request log analyzer, oink, rack bug, new relic rpm, rails metrics, showslow.org, msfast, webpagetest.org and gtmetrix.org.
The upcoming sessions will focus on:
Improving sql queries, and active record use
Improving general rails/ruby code
Improving the front-end
And a final presentation will cover how to be a more efficient and effective developer!
This series will be compressed into a best of session for the 2010 http://windycityRails.org conference
Becoming a more productive Rails DeveloperJohn McCaffrey
A presentation by John McCaffrey of RailsPerformance.com on how to manage technical information, ask technical questions, expand Ruby and Rails knowledge, and work on interesting side projects for open source, non-profits or as a freelancer
An Overview of the Javascript Ecosystem in 2015. Slides from this talk given at San Diego Javascript on June 2: https://www.youtube.com/watch?v=CGkPsNyI07A
Web Performance tuning presentation given at http://www.chippewavalleycodecamp.com/
Covers basic http flow, measuring performance, common changes to improve performance now, and several tools and techniques you can use now.
improving the performance of Rails web ApplicationsJohn McCaffrey
This presentation is the first in a series on Improving Rails application performance. This session covers the basic motivations and goals for improving performance, the best way to approach a performance assessment, and a review of the tools and techniques that will yield the best results. Tools covered include: Firebug, yslow, page speed, speed tracer, dom monster, request log analyzer, oink, rack bug, new relic rpm, rails metrics, showslow.org, msfast, webpagetest.org and gtmetrix.org.
The upcoming sessions will focus on:
Improving sql queries, and active record use
Improving general rails/ruby code
Improving the front-end
And a final presentation will cover how to be a more efficient and effective developer!
This series will be compressed into a best of session for the 2010 http://windycityRails.org conference
Becoming a more productive Rails DeveloperJohn McCaffrey
A presentation by John McCaffrey of RailsPerformance.com on how to manage technical information, ask technical questions, expand Ruby and Rails knowledge, and work on interesting side projects for open source, non-profits or as a freelancer
An Overview of the Javascript Ecosystem in 2015. Slides from this talk given at San Diego Javascript on June 2: https://www.youtube.com/watch?v=CGkPsNyI07A
Npm, bower, Angular, jQuery, grunt, gulp, browserify, requirejs, ember, backbone, requirejs, amd .... thousands of micro frameworks, libraries and tools.
The question is how do you avoid getting lost within the jungle of modern JS frameworks, libraries and tools? How to be effective and actually deliver while every day there is a new cool framework or tool coming out and one of the developers in your team would love to try it. In production.
In this talk I will explain the right strategy for dealing with the rapid changes in JS landscape and choosing the right set of tools for doing the job.
Key takeaways:
Get to know which js tools/libraries works well together.
Which tools/libraries are not cool anymore and why?
How to deal with library/tool dependency conflicts?
How to find good quality tools and frameworks?
My Website Can Vote - The Challenges of Maintaining a 20-year-old WebsiteKristine Howard
Talk given at WordCamp Sydney on September 24, 2016.
The Web is an industry that thrives on the new… but what about building sites that last?
In 1996, I used my newly acquired HTML skills to build a fan site for my favourite author.
Twenty years later, the site – roalddahlfans.com – is still alive and kicking.
I’ll trace the development of the site over the years, which mirrors both my own career journey as a developer and the trajectory of the web as a whole.
I’ll also talk about the challenges I faced during my recent 6-month project to convert the whole site – nearly 1500 pages – to WordPress, dragging it into the 21st century at last.
There are 900 Tickets currently in the Rails Lighthouse, some big, many small, and some relevant for Rails 3. Many of those issues could be fixed by people like us without too much effort.
Using online resources and a short demo we want do find out how to use the Rails Lighthouse, how to clone edge rails and how to run the test suites, and how one can create patches out of the fixes to make them available to the developers.
Our presentation on Israel Rails Conference 2012. Vitaly talking about rails performance, how to measure, what to improve and just as much important - what not to improve
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...Geoff Varosky
Abstract: “Why am I getting a security error??” “Why does my code work sometimes, but not others?” “I wonder if McDonalds is hiring.” Writing custom code in SharePoint opens up unlimited possibilities but also throws many hurdles in your way that will slow you down if you don’t take them into account. So, before giving up and searching for careers in the fast food industry, equip yourself with the knowledge you need to succeed in writing custom code for SharePoint.
List of few AngularJS recommended/best practices that can help to write clean, robust and maintainable SPA applications. It was presented at JUG Stockholm Sweden.
Agenda:
1. AngularJS Best Practice # 1: File Organization
2. AngularJS Best Practice # 2: Cross Component Communication
3. AngularJS Best Practice # 3: Scopes
4. AngularJS Best Practice # 4: Named Functions
5. AngularJS Best Practice # 5: Keep Controllers Focused
Presented by Rasheed (http://se.linkedin.com/pub/rasheed-waraich/46/113/72/) Co-founder Aurora Solutions (http://home.aurorasolutions.org/) & FixTelligent (www.fixtelligent.com)
Flexible UI Components for a Multi-Framework WorldKevin Ball
Slides from Flexible UI Components talk given at Web Unleashed 2017
Build UI components that work seamlessly in every JavaScript Framework.
Your core UI elements shouldn’t have to be different for your marketing site than they are in your application just because the former uses jQuery while the latter is built using Angular or React.
Lessons learned from work on ZURB Foundation 7.
Natalie MacLees' presentation on Progressively Enhancing WordPress themes from WordCamp Las Vegas 2011. Covers how to implement HTML5, CSS3, ARIA, SVG, and Responsive Design without breaking your theme for anybody.
Npm, bower, Angular, jQuery, grunt, gulp, browserify, requirejs, ember, backbone, requirejs, amd .... thousands of micro frameworks, libraries and tools.
The question is how do you avoid getting lost within the jungle of modern JS frameworks, libraries and tools? How to be effective and actually deliver while every day there is a new cool framework or tool coming out and one of the developers in your team would love to try it. In production.
In this talk I will explain the right strategy for dealing with the rapid changes in JS landscape and choosing the right set of tools for doing the job.
Key takeaways:
Get to know which js tools/libraries works well together.
Which tools/libraries are not cool anymore and why?
How to deal with library/tool dependency conflicts?
How to find good quality tools and frameworks?
My Website Can Vote - The Challenges of Maintaining a 20-year-old WebsiteKristine Howard
Talk given at WordCamp Sydney on September 24, 2016.
The Web is an industry that thrives on the new… but what about building sites that last?
In 1996, I used my newly acquired HTML skills to build a fan site for my favourite author.
Twenty years later, the site – roalddahlfans.com – is still alive and kicking.
I’ll trace the development of the site over the years, which mirrors both my own career journey as a developer and the trajectory of the web as a whole.
I’ll also talk about the challenges I faced during my recent 6-month project to convert the whole site – nearly 1500 pages – to WordPress, dragging it into the 21st century at last.
There are 900 Tickets currently in the Rails Lighthouse, some big, many small, and some relevant for Rails 3. Many of those issues could be fixed by people like us without too much effort.
Using online resources and a short demo we want do find out how to use the Rails Lighthouse, how to clone edge rails and how to run the test suites, and how one can create patches out of the fixes to make them available to the developers.
Our presentation on Israel Rails Conference 2012. Vitaly talking about rails performance, how to measure, what to improve and just as much important - what not to improve
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...Geoff Varosky
Abstract: “Why am I getting a security error??” “Why does my code work sometimes, but not others?” “I wonder if McDonalds is hiring.” Writing custom code in SharePoint opens up unlimited possibilities but also throws many hurdles in your way that will slow you down if you don’t take them into account. So, before giving up and searching for careers in the fast food industry, equip yourself with the knowledge you need to succeed in writing custom code for SharePoint.
List of few AngularJS recommended/best practices that can help to write clean, robust and maintainable SPA applications. It was presented at JUG Stockholm Sweden.
Agenda:
1. AngularJS Best Practice # 1: File Organization
2. AngularJS Best Practice # 2: Cross Component Communication
3. AngularJS Best Practice # 3: Scopes
4. AngularJS Best Practice # 4: Named Functions
5. AngularJS Best Practice # 5: Keep Controllers Focused
Presented by Rasheed (http://se.linkedin.com/pub/rasheed-waraich/46/113/72/) Co-founder Aurora Solutions (http://home.aurorasolutions.org/) & FixTelligent (www.fixtelligent.com)
Flexible UI Components for a Multi-Framework WorldKevin Ball
Slides from Flexible UI Components talk given at Web Unleashed 2017
Build UI components that work seamlessly in every JavaScript Framework.
Your core UI elements shouldn’t have to be different for your marketing site than they are in your application just because the former uses jQuery while the latter is built using Angular or React.
Lessons learned from work on ZURB Foundation 7.
Natalie MacLees' presentation on Progressively Enhancing WordPress themes from WordCamp Las Vegas 2011. Covers how to implement HTML5, CSS3, ARIA, SVG, and Responsive Design without breaking your theme for anybody.
My Site is slow - Drupal Camp London 2013hernanibf
Drupal is a powerful and flexible tool to create web applications without building everything from scratch. This ability can drive developers to build complex websites without understanding what is Drupal doing behind the scenes.
The majority of Drupal performance talks mostly focus in aspects like infrastructure changes, caching strategies or comparisons between modules and architectures. Unfortunately when performance problems occur, development teams also follow strategies to replace different aspects of the platform looking only to standard aspects like slow queries without understanding and profiling the real problem.
The majority of times it is fundamental to measure and analyze what is the application is actually doing to understand te real problems. Drupal is a platform used by million of websites worlwide and its performance can in most cases be compared after measured.
In Acquia we do dozens of performance assessments per year, and even in most clients we find the same problems, often we find situations that only can be detected when measured and analized when looking to a profiler report.
In this session, I will explain how to detect performance problems looking to simple data, from logs to profiler data and providing some nice targets that can be analyzed to understand what is causing the uncommon bad performance of a site.
Does This Theme Make My Website Look Fat? (Wordcamp SLC 2013)Adam Dunford
While the principles of responsive web design can make sites look better on mobile devices, they don’t necessarily load faster than a site designed for desktops. And as more and more sophisticated WordPress themes emerge, with their multiple options and fancy sliders, websites just keep getting more and more bloated.
This presentation will help cut out the junk that’s larding up your sites so you can better meet the demand of users wanting fast-loading user experiences–no matter the device or connection.
Presented at WordCamp Salt Lake City 2013 (http://2013.slc.wordcamp.org/)
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...John McCaffrey
(reposting with clearer title)
Performance tuning presentation from WindyCityRails 2010.
Why performance matters
The right way to approach it
Front end testing tools
Automated testing tools
Common problems and the ways to solve them in Rails
Rails specific tools
bullet
slim_scrooge
rack bug
request log analyzer
rails indexes
Drupal is a powerful and flexible platform to build websites with rich funcionalities without building almost anything from scratch. This flexibility brought by the usage of a powerful framework and the work of a super active community can abstract people to understand what is Drupal doing behind the scenes.
Most of performance talks regarding Drupal focus on aspects like infrastructure changes, caching strategies, and comparison of performance between modules or platforms. Unfortunately when performance problems occur, development teams also follow several strategies to replace several aspects in their platforms, jump directly to look for slow queries before trying really to understand where is the bottleneck.
However, most of the times what really needs to be done is to look to what the application is doing and understanding why is it taking so long to do it. Drupal is a platform used by million of websites worldwide and its performance is easy to measure and compare.
At Acquia we have done dozens of performance assessments, and even if we usually face the same problems, sometimes we found weird situations that are only possible to be detected when measured. Measuring and profiling is the only way to understand performance problems in a site and provide valid fixes.
In this talk I will explain how to detect problems regarding performance in Drupal, using simple modules like devel, profilers like XhProf and looking to logs to understand the impact done on the application.
Become an artisan web analytics practitioner by building your own analytics QA tool. For Adobe Analytics but you could do the same with Google Analytics, A/B testing, tag management, VOC tools and many other analytics tools
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJSSrijan Technologies
AngularJS is currently at the forefront of MVC (Model View Controller) frameworks for the web, and it makes it very simple to develop prototypes and web applications in it. But how do we ensure that the large scale applications we develop remain high performance, bug free and fast?
In this webinar, our speaker shared his learnings from developing various large scale AngularJS applications. He also shared how to create a maintainable project structure, and cover common performance bottlenecks and best practices to follow.
Watch complete webinar recording: http://youtu.be/b92Y77TExiA
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
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
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
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
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Accelerate your Kubernetes clusters with Varnish Caching
Windycityrails page performance
1. Faster Page
Performance
John McCaffrey
@J_McCaffrey
http://spkr8.com/t/8314
2. Agenda
• Intro
• Performance 101
• Performance tuning workflow
• Performance features in Rails 3, 3.1
• Considerations for Mobile and HTML 5
• Q&A
3. Intro
• Doing Rails since 2007
• 4th time presenting at WindyCityRails
o 2008: Advanced Firebug and JS unit testing
o 2009: PDF Generation in Rails
o 2010: Rails Performance Tuning
o 2011: Faster Page Performance
• Addicted to Performance Tuning
• railsperformance.blogspot.com
@J_McCaffrey
• Feedback: speakerrate.com railsperformance@gmail.com
4. Intro
• Doing Rails since 2007
• 4th time presenting at WindyCityRails
o 2008: Advanced Firebug and JS unit testing
o 2009: PDF Generation in Rails
o 2010: Rails Performance Tuning
o 2011: Faster Page Performance
• Addicted to Performance Tuning
• railsperformance.blogspot.com
@J_McCaffrey
• Feedback: speakerrate.com railsperformance@gmail.com
5. Intro
• Doing Rails since 2007
• 4th time presenting at WindyCityRails
o 2008: Advanced Firebug and JS unit testing
o 2009: PDF Generation in Rails
o 2010: Rails Performance Tuning
o 2011: Faster Page Performance
• Addicted to Performance Tuning
• railsperformance.blogspot.com
@J_McCaffrey
• Feedback: speakerrate.com railsperformance@gmail.com
7. Intro
• A little about you, and the people around you
8. Intro
• A little about you, and the people around you
• You are all smarter than I am
9. Intro
• A little about you, and the people around you
• You are all smarter than I am
• Try hard to Network today, meet cool people
10. Intro
• A little about you, and the people around you
• You are all smarter than I am
• Try hard to Network today, meet cool people
• Eat lunch with someone new, invite someone
into your ‘crowd’, go to the After Party!!
11. Quick Poll
• Work on a Rails application
• Have been doing Rails for less than 6 months? 1yr? 2yrs? 4yrs?
• Testing Rspec? cucumber? Test::Unit? CI?
• Write Javascript frequently? jQuery? Prototype? js testing?
• Working with Rails 3 or Rails 3.1
• Work on Mobile (native or web)
• Working with HTML 5
12. Quick Poll
• Raise your hand if you Want to learn more
• Stand up if you’d like to meet up with
others and share what you’ve learned
13. Quick Poll
• Raise your hand if you Want to learn more
• Stand up if you’d like to meet up with
others and share what you’ve learned
Don’t knock over your coffee!
14. Help me, Help you!!
• Improving page loading time
• Sql query tuning, indexes or DB tuning
• Rails 3 and 3.1
• HTML 5 and CSS 3
• NoSQL
17. Introduce yourself
(toyou’re from
someone new)
• Name & Where
Photo by @monty_ksycki
18. Introduce yourself
(toyou’re from
someone new)
• Name & Where
• Most important thing you want to
get out of WindyCityRails
Photo by @monty_ksycki
19. Introduce yourself
(toyou’re from
someone new)
• Name & Where
• Most important thing you want to
get out of WindyCityRails
• Only 2mins for this!!!!
Photo by @monty_ksycki
20. Agenda
• Intro
•
•
Performance 101
Performance tuning workflow
• Performance features in Rails 3, 3.1
• Considerations for Mobile and HTML 5
34. Perf Tuning Pledge
• “I will MEASURE before and after”
• “I will document and share the findings”
35. Perf Tuning Pledge
• “I will MEASURE before and after”
• “I will document and share the findings”
• “WE will decide to monitor it, fix it, or just
forget it”
36. Agenda
• Intro
• Performance 101
• Performance tuning workflow
• Performance features in Rails 3, 3.1
• Considerations for Mobile and HTML 5
39. Improving page load
Yslow (Firefox and Chrome)
http://developer.yahoo.com/yslow/
Page speed (Firefox and Chrome)
http://code.google.com/speed
Dynatrace (IE and Firefox)
http://ajax.dynatrace.com
Webpagetest.org (IE, Chrome, Firefox)
40. Improving page load
Yslow (Firefox and Chrome)
http://developer.yahoo.com/yslow/
Page speed (Firefox and Chrome)
http://code.google.com/speed
Dynatrace (IE and Firefox)
http://ajax.dynatrace.com
Webpagetest.org (IE, Chrome, Firefox)
41. Improving page load
Yslow (Firefox and Chrome)
http://developer.yahoo.com/yslow/
Page speed (Firefox and Chrome)
http://code.google.com/speed
Dynatrace (IE and Firefox)
http://ajax.dynatrace.com
Webpagetest.org (IE, Chrome, Firefox)
42. Improving page load
Yslow (Firefox and Chrome)
http://developer.yahoo.com/yslow/
Page speed (Firefox and Chrome)
http://code.google.com/speed
Dynatrace (IE and Firefox)
http://ajax.dynatrace.com
Webpagetest.org (IE, Chrome, Firefox)
43. Improving page load
Yslow (Firefox and Chrome)
http://developer.yahoo.com/yslow/
Page speed (Firefox and Chrome)
http://code.google.com/speed
Dynatrace (IE and Firefox)
http://ajax.dynatrace.com
Webpagetest.org (IE, Chrome, Firefox)
44. Improving page load
Yslow (Firefox and Chrome)
http://developer.yahoo.com/yslow/
Page speed (Firefox and Chrome)
http://code.google.com/speed
Dynatrace (IE and Firefox)
http://ajax.dynatrace.com
Webpagetest.org (IE, Chrome, Firefox)
80-85% of the time is spent on the front-end
45. Page load rules
1. Minimize HTTP Requests
2. Use a Content Delivery Network
3. Add an Expires or a Cache-Control Header
4. Gzip Components
5. Put StyleSheets at the Top
6. Put Scripts at the Bottom
7. Avoid CSS Expressions
Steve Souders 8. Make JavaScript and CSS External
9. Reduce DNS Lookups
10. Minify JavaScript and CSS
11. Avoid Redirects
12. Remove Duplicate Scripts
13. Configure ETags
14. Make AJAX Cacheable
15. Use GET for AJAX Requests
16. Reduce the Number of DOM Elements
17. No 404s
18. Reduce Cookie Size
58. Save your Waterfall!
HTTP Archive format
(HAR)
• Export options www.softwareishard.com/blog/har-adopters
• Firebug
• IE9
• Chrome
• Webpagetest.org
• Har viewer www.softwareishard.com/har/viewer
• Compare multiple files
59. Save your Waterfall!
HTTP Archive format
(HAR)
• Export options www.softwareishard.com/blog/har-adopters
• Firebug
• IE9
• Chrome
• Webpagetest.org
• Har viewer www.softwareishard.com/har/viewer
• Compare multiple files
Did I mention that its important to measure?
60. Solutions
• Gzip
• Combine and minify js and css
• Load css first, js at the bottom
• Optimize images and use css sprites
• Use a cdn for static assets
• Defer javascript loading
62. Deferred loading of
javascript
• Load only the minimum necessary javascript first
• Load the rest of the javascript asynchronously
• Pre-load and pre-cache javascript and images for
the next pages
63. Deferred loading of
javascript
• Load only the minimum necessary javascript first
• Load the rest of the javascript asynchronously
• Pre-load and pre-cache javascript and images for
the next pages
bit.ly/non-blocking-js
www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking
64. Leverage
✓ Those changes improve the
performance across multiple
requests
✓ Well tested, well understood
✓ Continues to be useful as new
features are added, won’t get
in your way
65. Leverage
✓ Those changes improve the
performance across multiple
requests
✓ Well tested, well understood
✓ Continues to be useful as new
features are added, won’t get
in your way
71. What I’m looking for
• What is the average response time
• What is the slowest request
• What request makes up the majority of the
work the server is doing
• Are there good candidates for caching?
72. Common culprits
• Not leveraging the database
• Too much memory
• Too many queries
• Generally slow code
• Loading more fields than needed
73. N +1
clients = Client.limit(10)
clients.each do |client|
puts client.address.postcode
end
74. N +1
1 query to clients = Client.limit(10)
load the clients clients.each do |client|
puts client.address.postcode
end
75. N +1
1 query to clients = Client.limit(10)
load the clients clients.each do |client|
puts client.address.postcode
end
1 query for each address (x10)
76. N +1
1 query to clients = Client.limit(10)
load the clients clients.each do |client|
puts client.address.postcode
end
1 query for each address (x10)
clients = Client.includes(:address).limit(10)
clients.each do |client|
puts client.address.postcode
end
77. N +1
1 query to clients = Client.limit(10)
load the clients clients.each do |client|
puts client.address.postcode
end
1 query to 1 query for each address (x10)
load the clients
clients = Client.includes(:address).limit(10)
clients.each do |client|
puts client.address.postcode
end
78. N +1
1 query to clients = Client.limit(10)
load the clients clients.each do |client|
puts client.address.postcode
end
1 query to 1 query for each address (x10)
load the clients
clients = Client.includes(:address).limit(10)
clients.each do |client|
puts client.address.postcode
end
1 query to get all 10 Addresses!
80. Libraries
• Document why you have it
• Remove unused, reduce dependencies
• Pick between duplicate tools
• Try to stay current
• Rvm, bundler and git branches for testing
• “Is it safe to upgrade that library” - find the
right balance of tests to answer this
88. Culprits
• Too many queries
• No indexes on the key data
• Not optimized for how the db ‘thinks’
• Not enough server memory for sorting
• Trying to do too much in one query
90. Testing
• Measure first!
• Make performance tuning changes in the
most tested parts of the app
• Have the most important parts of your app
well-tested, so tuning will be easier
• Well-tested code tends to be well factored
93. Javascript is powerful
• Most hate for javascript is really a hatred of
the browser and DOM interaction
94. Javascript is powerful
• Most hate for javascript is really a hatred of
the browser and DOM interaction
• Javascript is driving a lot of very cool things
95. Javascript is powerful
• Most hate for javascript is really a hatred of
the browser and DOM interaction
• Javascript is driving a lot of very cool things
• Node.js
96. Javascript is powerful
• Most hate for javascript is really a hatred of
the browser and DOM interaction
• Javascript is driving a lot of very cool things
• Node.js
• Backbone
97. Javascript is powerful
• Most hate for javascript is really a hatred of
the browser and DOM interaction
• Javascript is driving a lot of very cool things
• Node.js
• Backbone
• sproutCore
98. High performance js
• UI thread is responsible for js
and UI updates
• Understand Repaint and Reflow
triggers
• Benchmarks for browser
performance
• Dom Scripting
• Memory and cpu usage
104. jQuery Top Issues
• Poor selector usage
• $(‘#Id, form, input’) Id and element are fast
• $(‘.classname’) causes full scan in IE5-8
105. jQuery Top Issues
• Poor selector usage
• $(‘#Id, form, input’) Id and element are fast
• $(‘.classname’) causes full scan in IE5-8
• show() and hide() often slower
than .addClass(“show”) or .addClass(“hide”)
106. jQuery Top Issues
• Poor selector usage
• $(‘#Id, form, input’) Id and element are fast
• $(‘.classname’) causes full scan in IE5-8
• show() and hide() often slower
than .addClass(“show”) or .addClass(“hide”)
• .each() often slower than regular ‘for’ loop
107. jQuery Top Issues
• Poor selector usage
• $(‘#Id, form, input’) Id and element are fast
• $(‘.classname’) causes full scan in IE5-8
• show() and hide() often slower
than .addClass(“show”) or .addClass(“hide”)
• .each() often slower than regular ‘for’ loop
• Avoid extra queries by caching selector
108. jQuery Top Issues
• Poor selector usage
• $(‘#Id, form, input’) Id and element are fast
• $(‘.classname’) causes full scan in IE5-8
• show() and hide() often slower
than .addClass(“show”) or .addClass(“hide”)
• .each() often slower than regular ‘for’ loop
• Avoid extra queries by caching selector
• Avoid manipulating the Dom in a loop, try to
append all at once (with a wrapping element)
112. Browser Comparison
• jsperf.com
• Compare js performance across browsers
• http://jsperf.com/queryselectorall-vs-
getelementsbytagname
• jsfiddle.net (full page structure)
• http://jsfiddle.net/addyosmani/BFeMN/
These tools make benchmarks easier and repeatable
113. Agenda
• Intro
• Performance 101
• Performance tuning workflow
• Performance features in Rails 3, 3.1
• Considerations for Mobile and HTML 5
114. Performance features in Rails 3
• Separation of framework, only load what you need
• New Active Record Arel query structure
• http://www.slideshare.net/tenderlove/zomg-why-
is-this-code-so-slow
• Bundler
• Ruby 1.9.2 (with patch for faster Rails 3 load)
118. Performance features in Rails 3.1
• JQuery by default
• Prepared statement caching
• New Asset Pipeline
119. Performance features in Rails 3.1
• JQuery by default
• Prepared statement caching
• New Asset Pipeline
• railscasts.com/episodes/279-understanding-the-asset-pipeline
120. Performance features in Rails 3.1
• JQuery by default
• Prepared statement caching
• New Asset Pipeline
• railscasts.com/episodes/279-understanding-the-asset-pipeline
• Http Streaming
121. Performance features in Rails 3.1
• JQuery by default
• Prepared statement caching
• New Asset Pipeline
• railscasts.com/episodes/279-understanding-the-asset-pipeline
• Http Streaming
• railscasts.com/episodes/266-http-streaming
122.
123. Html 5 is a big deal!
• More tags and native behavior
• Native form elements
• Client side Validation
• http://slides.html5rocks.com
• http://mrdoob.com/91/Ball_Pool
• http://bodybrowser.googlelabs.com
• http://www.chromeexperiments.com/
127. Mobile
• Good for ‘desktop’ and mobile
• Reduce network calls
• Only load what you need
128. Mobile
• Good for ‘desktop’ and mobile
• Reduce network calls
• Only load what you need
• Cache as much as you can (HTML5 AppCache)
129. Mobile
• Good for ‘desktop’ and mobile
• Reduce network calls
• Only load what you need
• Cache as much as you can (HTML5 AppCache)
• Specific to mobile
130. Mobile
• Good for ‘desktop’ and mobile
• Reduce network calls
• Only load what you need
• Cache as much as you can (HTML5 AppCache)
• Specific to mobile
• Javascript is roughly 10X slower on mobile
131. Mobile
• Good for ‘desktop’ and mobile
• Reduce network calls
• Only load what you need
• Cache as much as you can (HTML5 AppCache)
• Specific to mobile
• Javascript is roughly 10X slower on mobile
• Click events delay for 300-500ms, use touch instead
132. Mobile
• Good for ‘desktop’ and mobile
• Reduce network calls
• Only load what you need
• Cache as much as you can (HTML5 AppCache)
• Specific to mobile
• Javascript is roughly 10X slower on mobile
• Click events delay for 300-500ms, use touch instead
• Smaller Cache (IOS only caches pages under 25kb
unzipped)
135. javascript
• Find a mentor: http://jsmentors.com
• play around: http://jsfiddle.net/addyosmani/BFeMN
• run tests and share them: jsperf.com
• speed of different tools: dante.dojotoolkit.org/taskspeed
136. Thank You!
Any Questions?
railsperformance.blogspot.com
railsperformance@gmail.com
@J_McCaffrey
Editor's Notes
\n
\n
love making apps faster\nIf I don’t cover the thing you are looking for, come find me, twitter\n
love making apps faster\nIf I don’t cover the thing you are looking for, come find me, twitter\n
picture of windy city audience that I took in 2009\n\nYou all have had different experiences, and there are others here today that you can share with, and can share with you. The value of a conference is partially in the presentations, but mostly in the networking.\nIf you play your cards right, you’ll probably meet 2-3 people that will give you useful info today, and another 2-3 people that will give you critical info in the next 2-3 months\n\nThere are a lot of smart people in here, take the time to meet them. \nTake the time to meet some new people, eat lunch with a different crowd, step out of your comfort zone\ntrust me, you’ll get a lot more out of the conference if you do\n
picture of windy city audience that I took in 2009\n\nYou all have had different experiences, and there are others here today that you can share with, and can share with you. The value of a conference is partially in the presentations, but mostly in the networking.\nIf you play your cards right, you’ll probably meet 2-3 people that will give you useful info today, and another 2-3 people that will give you critical info in the next 2-3 months\n\nThere are a lot of smart people in here, take the time to meet them. \nTake the time to meet some new people, eat lunch with a different crowd, step out of your comfort zone\ntrust me, you’ll get a lot more out of the conference if you do\n
picture of windy city audience that I took in 2009\n\nYou all have had different experiences, and there are others here today that you can share with, and can share with you. The value of a conference is partially in the presentations, but mostly in the networking.\nIf you play your cards right, you’ll probably meet 2-3 people that will give you useful info today, and another 2-3 people that will give you critical info in the next 2-3 months\n\nThere are a lot of smart people in here, take the time to meet them. \nTake the time to meet some new people, eat lunch with a different crowd, step out of your comfort zone\ntrust me, you’ll get a lot more out of the conference if you do\n
picture of windy city audience that I took in 2009\n\nYou all have had different experiences, and there are others here today that you can share with, and can share with you. The value of a conference is partially in the presentations, but mostly in the networking.\nIf you play your cards right, you’ll probably meet 2-3 people that will give you useful info today, and another 2-3 people that will give you critical info in the next 2-3 months\n\nThere are a lot of smart people in here, take the time to meet them. \nTake the time to meet some new people, eat lunch with a different crowd, step out of your comfort zone\ntrust me, you’ll get a lot more out of the conference if you do\n
Raise your hand: Who thinks audience participation is lame?\n\nTrust me, this is a good warm up, and it won’t take long\nEveryone Hands up, \nOk hands down\n
Of those people that have tried these things, let’s see if we can find a few that might be ok with sharing what they’ve learned. Find them out in the hallways and get to know them\n\nDon’t knock over your coffee\n
“Raise your hand if you want to learn more about”\n“Stand up if you feel you know something about this, and wouldn’t mind chatting about it and sharing what you’ve learned”\n\n
\n
\n
\n
\n
\n
When we talk about performance tuning, we are not just talking about slow apps that need to be fixed, we are also talking about ‘normal’ apps that are tuned to really fly.\n\n1 sec delay, on 100k a day could lead to 2.5mil lost\nWe’re talking about cost and value\n
100ms faster lead to 1% increase in revenue for amazon\n400ms faster lead to 9% increase in traffic (more traffic, more ads, more eyeballs)\n\n
went from 6sec to 1.2\nsped up development and deployment \nand consolidated hardware\n
\n
They tell others about their bad experience, “That’s not the kind of ‘viral’ message you want”\n\nPage performance is in the mind and behaviors of real users\n
\n
\n
talk about cost and value\npremature opt. is usually high upfront cost with low long term value\nlooking for low upfront cost, low long-term cost, high long term value\n\nleverage\nthings that will improve more requests, or improve more frequently called\n\nDon’t go back to your project and make a bunch of changes in the name of Performance\n
talk about cost and value\npremature opt. is usually high upfront cost with low long term value\nlooking for low upfront cost, low long-term cost, high long term value\n\nleverage\nthings that will improve more requests, or improve more frequently called\n\nDon’t go back to your project and make a bunch of changes in the name of Performance\n
Measuring and monitoring is not premature, go for good enough measuring\n\nWe should know these things about our apps\n
Make it easy for the team to track general performance numbers\ncommit message should read I saw that this was taking x amount of time, so I changed it. now it takes Y\n
Make it easy for the team to track general performance numbers\ncommit message should read I saw that this was taking x amount of time, so I changed it. now it takes Y\n
Make it easy for the team to track general performance numbers\ncommit message should read I saw that this was taking x amount of time, so I changed it. now it takes Y\n
\n
I got feedback from several people that they would like me to cover the general flow and hotspots.\nI’m going to go over my basic workflow, referencing some of the tools I use and what I look for\n
These tools analyze your page and give you some hints at how to improve the page loading time for first time and repeat visitors\nThey are definitely the first thing you should do, even if you think you ‘know’ what the real problem is, these tools will confirm it, and allow you and the rest of the team to measure performance over time.\n\nIts important to use tools/instrumentation that everyone on the team has visibility to.\nYou’ll have less arguments about performance impacts if you can teach them how to measure\n
These tools analyze your page and give you some hints at how to improve the page loading time for first time and repeat visitors\nThey are definitely the first thing you should do, even if you think you ‘know’ what the real problem is, these tools will confirm it, and allow you and the rest of the team to measure performance over time.\n\nIts important to use tools/instrumentation that everyone on the team has visibility to.\nYou’ll have less arguments about performance impacts if you can teach them how to measure\n
These tools analyze your page and give you some hints at how to improve the page loading time for first time and repeat visitors\nThey are definitely the first thing you should do, even if you think you ‘know’ what the real problem is, these tools will confirm it, and allow you and the rest of the team to measure performance over time.\n\nIts important to use tools/instrumentation that everyone on the team has visibility to.\nYou’ll have less arguments about performance impacts if you can teach them how to measure\n
These tools analyze your page and give you some hints at how to improve the page loading time for first time and repeat visitors\nThey are definitely the first thing you should do, even if you think you ‘know’ what the real problem is, these tools will confirm it, and allow you and the rest of the team to measure performance over time.\n\nIts important to use tools/instrumentation that everyone on the team has visibility to.\nYou’ll have less arguments about performance impacts if you can teach them how to measure\n
These tools analyze your page and give you some hints at how to improve the page loading time for first time and repeat visitors\nThey are definitely the first thing you should do, even if you think you ‘know’ what the real problem is, these tools will confirm it, and allow you and the rest of the team to measure performance over time.\n\nIts important to use tools/instrumentation that everyone on the team has visibility to.\nYou’ll have less arguments about performance impacts if you can teach them how to measure\n
These tools analyze your page and give you some hints at how to improve the page loading time for first time and repeat visitors\nThey are definitely the first thing you should do, even if you think you ‘know’ what the real problem is, these tools will confirm it, and allow you and the rest of the team to measure performance over time.\n\nIts important to use tools/instrumentation that everyone on the team has visibility to.\nYou’ll have less arguments about performance impacts if you can teach them how to measure\n
maybe you want to break the rules and optimize for repeat over new users\ndescribe the groupings\nless network calls\nless data\nleverage how the browser works (ordering, host limit, rendering, etc)\nnow sometimes you want to intentionally break the rules\noptimize for repeat over new users\n\n
Dark green = DNS lookup (there is such a thing as bad dns)\nOrange = TCP connection handshake (shows you the cost of making all those requests)\nBright Green = Time to first byte coming back (shows you how long the server was thinking)\nBlue = content download (how long it all took)\n\n
orange bars: cost of handshake, turn on ‘keep-alives’, load less\nlong bright green bars: waiting for first byte, maybe a CDN would help\nlong blue bars: long time to load the data, slow server IO, slow network, lost packets\n\n
This is from chrome, the tan is blocking\nwhen js is running, nothing else can update\n
This is from chrome, the tan is blocking\nwhen js is running, nothing else can update\n
This is from chrome, the tan is blocking\nwhen js is running, nothing else can update\n
This is from chrome, the tan is blocking\nwhen js is running, nothing else can update\n
If you load conditional comments for IE stylesheets, check this article, look at your waterfall for IE\nthe workaround is to put an empty conditional comment after the doctype, or before other includes\n
If you load conditional comments for IE stylesheets, check this article, look at your waterfall for IE\nthe workaround is to put an empty conditional comment after the doctype, or before other includes\n
If you load conditional comments for IE stylesheets, check this article, look at your waterfall for IE\nthe workaround is to put an empty conditional comment after the doctype, or before other includes\n
If you load conditional comments for IE stylesheets, check this article, look at your waterfall for IE\nthe workaround is to put an empty conditional comment after the doctype, or before other includes\n
If you load conditional comments for IE stylesheets, check this article, look at your waterfall for IE\nthe workaround is to put an empty conditional comment after the doctype, or before other includes\n
If you load conditional comments for IE stylesheets, check this article, look at your waterfall for IE\nthe workaround is to put an empty conditional comment after the doctype, or before other includes\n
If you load conditional comments for IE stylesheets, check this article, look at your waterfall for IE\nthe workaround is to put an empty conditional comment after the doctype, or before other includes\n
Save your har file regularly, and load it up to see what’s going on\nThere are browser differences in what gets loaded, and when, so keep track of what you did.\nexample of ‘good enough’ measurement\nhttp://www.softwareishard.com/har/viewer/ \nyou can drag multiple har files and compare them\nhttp://www.softwareishard.com/blog/har-adopters/ list of har adopters\nyou can download and run it locally if you want to\n
Save your har file regularly, and load it up to see what’s going on\nThere are browser differences in what gets loaded, and when, so keep track of what you did.\nexample of ‘good enough’ measurement\nhttp://www.softwareishard.com/har/viewer/ \nyou can drag multiple har files and compare them\nhttp://www.softwareishard.com/blog/har-adopters/ list of har adopters\nyou can download and run it locally if you want to\n
tools like jammit, sprockets to help\ntouch on Rails 3.1 asset pipeline\n\n\n\n\n
the single most important performance coding pattern for today's websites is to load js async\nhttp://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/\n\nImage of Steve Souders looking up at the quote\ndifferent techniques\ngmail technique\n\nThis deserves more attention\nThis can be used in conjunction with generic, cacheable base pages\n
the single most important performance coding pattern for today's websites is to load js async\nhttp://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/\n\nImage of Steve Souders looking up at the quote\ndifferent techniques\ngmail technique\n\nThis deserves more attention\nThis can be used in conjunction with generic, cacheable base pages\n
the single most important performance coding pattern for today's websites is to load js async\nhttp://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/\n\nImage of Steve Souders looking up at the quote\ndifferent techniques\ngmail technique\n\nThis deserves more attention\nThis can be used in conjunction with generic, cacheable base pages\n
The hallmarks of the ‘sweet spot’\nYour servers and network are doing less work, freeing it up to do something else\nThe client’s browser is doing less work\nrun these tools against your app, and save your har file, to keep an eye on trends\n
\n
\n
\n
\n
Its ok for some requests to be slow, month-end reporting, etc\nLooking for consistency, \nhow long has this been happening\ncan I reproduce it on the production server, and can I reproduce it locally\n\nlower level\nwhat is the memory footprint\nis it the code, db, or partials that is taking so long?\n
a few examples from itest, where pagination call was in the wrong spot\n\nauthors.posts.comments \ntoo much ruby\ntoo many queries\n\nThere is a cost to have all of the fields loaded, both from a memory footprint stand point, and a datatype conversion. \nIf all you are doing is a readonly view of the object, use :select to narrow to just the part you care about\n
http://guides.rubyonrails.org/active_record_querying.html\n\nSELECT * FROM clients LIMIT 10\nSELECT addresses.* FROM addresses\n  WHERE (addresses.client_id IN (1,2,3,4,5,6,7,8,9,10))\n\n
http://guides.rubyonrails.org/active_record_querying.html\n\nSELECT * FROM clients LIMIT 10\nSELECT addresses.* FROM addresses\n  WHERE (addresses.client_id IN (1,2,3,4,5,6,7,8,9,10))\n\n
http://guides.rubyonrails.org/active_record_querying.html\n\nSELECT * FROM clients LIMIT 10\nSELECT addresses.* FROM addresses\n  WHERE (addresses.client_id IN (1,2,3,4,5,6,7,8,9,10))\n\n
http://guides.rubyonrails.org/active_record_querying.html\n\nSELECT * FROM clients LIMIT 10\nSELECT addresses.* FROM addresses\n  WHERE (addresses.client_id IN (1,2,3,4,5,6,7,8,9,10))\n\n
http://guides.rubyonrails.org/active_record_querying.html\n\nSELECT * FROM clients LIMIT 10\nSELECT addresses.* FROM addresses\n  WHERE (addresses.client_id IN (1,2,3,4,5,6,7,8,9,10))\n\n
http://guides.rubyonrails.org/active_record_querying.html\n\nSELECT * FROM clients LIMIT 10\nSELECT addresses.* FROM addresses\n  WHERE (addresses.client_id IN (1,2,3,4,5,6,7,8,9,10))\n\n
http://guides.rubyonrails.org/active_record_querying.html\n\nSELECT * FROM clients LIMIT 10\nSELECT addresses.* FROM addresses\n  WHERE (addresses.client_id IN (1,2,3,4,5,6,7,8,9,10))\n\n
http://guides.rubyonrails.org/active_record_querying.html\n\nSELECT * FROM clients LIMIT 10\nSELECT addresses.* FROM addresses\n  WHERE (addresses.client_id IN (1,2,3,4,5,6,7,8,9,10))\n\n
http://guides.rubyonrails.org/active_record_querying.html\n\nSELECT * FROM clients LIMIT 10\nSELECT addresses.* FROM addresses\n  WHERE (addresses.client_id IN (1,2,3,4,5,6,7,8,9,10))\n\n
You can tell what railscasts were popular when a rails project was created, its like rings on a tree\n\nActs_as_tree, acts_as_list, acts_as_state_machine all provide awesome functionality, but the design is an abstraction to handle most cases. You have to look at your particular case to see what the best solution is\nGems and plugins add to the memory footprint even if you don’t call the code. \nuse Rvm, git branches, bundler to test\nnewer versions of libraries\nnewer versions of Rails\nNewer versions of Ruby\nSet up a ‘profiling’ branch with\nrack bug\nquery-trace\nmetric-fu\nyou might even play around with jruby, and use some of the profiling tools of the JVM\n
\n
After doing the page load improvements, db query tuning, and indexes is usually where I make the biggest impact\n\nMost apps are heavy read, but we often chose to run calculations and lookups at read time.\n\nOne approach is to segment or shard the data, the system runs the same queries, but the underlying access plan is different\nshard by customer\npartition by date, etc\n
I’ve seen issues where its a 32bit mysql running on 64 bit\n\nhttp://www.mysqlperformanceblog.com/2008/07/25/the-1-mistake-hosting-providers-make-for-mysql-servers/\n
Shows me the total time\nsequential scans and index scans\nand where the time was spent\nI chopped this one a bit to fit on the slide, the real one is here http://explain.depesz.com/s/cRm\n
Shows me the total time\nsequential scans and index scans\nand where the time was spent\nI chopped this one a bit to fit on the slide, the real one is here http://explain.depesz.com/s/cRm\n
In rails I don’t see the last one as much, but sometimes its just much faster to do one query to get all the ids, and another query to select on those ids. You just have to try it and see what’s fastest (with prod data)\n
sweet spot effort vs. cost\nwell-factored code usually reduces dependencies and duplication\n\n
We realize the benefits of using javascript MVC design\nbackbone, sproutcore,\n
We realize the benefits of using javascript MVC design\nbackbone, sproutcore,\n
We realize the benefits of using javascript MVC design\nbackbone, sproutcore,\n
We realize the benefits of using javascript MVC design\nbackbone, sproutcore,\n
We realize the benefits of using javascript MVC design\nbackbone, sproutcore,\n
You’ve found the issue, now try to test it on other browsers, share it\n
You’ve found the issue, now try to test it on other browsers, share it\n
You’ve found the issue, now try to test it on other browsers, share it\n
\n
\n
Identity map\n
Identity map\n
Identity map\n
Identity map\n
Identity map\n
Identity map\n
\n
refer to items from google io conf.\nangry birds\nthat song video\n\ncss3 spiderman and other cool things\n\nGPU hardware acceleration: layout, CSS3 transitions, 3D transforms\nanimations can be done faster and look better\n