Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
Reasoning about the performance of your code doesn't need to require a PhD in computer science or specialized tooling - We'll learn how to quickly recognize and diagnose common performance issues like excessive algorithmic complexity and IO waiting using OpenTelemetry compatible tools. Then we'll fix those issues, and ensure that they stay fixed using automated performance testing, even as your application grows.
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
The video titled "O(1), O(n) and O(#$*&!)" presented by Stephen Prater at RailsConf 2022 focuses on understanding and improving the performance of software applications without the need for advanced math or complex engineering know-how. Prater emphasizes the importance of recognizing and diagnosing common performance issues, primarily around algorithmic complexity and I/O waiting, using tools compatible with OpenTelemetry. Key points covered in the talk include: - Introduction to different O(1), O(n), and O(#$*&!) complexities in real-life programming, where emphasis is placed on practical performance implications rather than theoretical complexities. - The significance of classifying runtimes into three categories for better performance management. - Utilization of visual tools like flame graphs and traces to analyze the performance characteristics of applications and identify issues like excessive I/O waits or computational bottlenecks. - Common performance bottlenecks, particularly in Ruby on Rails, such as the "N plus one" query issue, which can be mitigated with eager loading of data. - Strategies to handle I/O waiting efficiently, including the concept of concurrency and avoiding unnecessary waits on I/O operations. Examples from JavaScript’s promise mechanism were used to illustrate effective concurrency practices. - A discussion on Amdahl's Law, detailing the limits of concurrency in software development and how to effectively parallelize operations without increasing the sequential workload. - Further exploration of algorithmic complexities, showcasing different sorting algorithms and their implications for performance based on their growth rate. - The conclusion reinforces the importance of measuring performance, instituting automated performance testing, and when necessary, investing in better hardware to overcome physical limitations affecting software performance. Ultimately, the video presents practical frameworks for identifying, diagnosing, and resolving software performance issues. The talk concludes with the encouragement to continually assess and measure performance improvements and to recognize when additional optimization efforts may yield diminishing returns.
Suggest modifications
Cancel