Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
Writing performant code is hard. Writing performant ruby code that does lots of stuff is really hard. CocoaPods got to be pretty slow “at scale”, and this is the story of how we made our pod install times bearable again. By Samuel Giddins https://twitter.com/@segiddins Samuel Giddins is a developer well-versed in the rituals of writing developer tools that occasionally work. By day, Samuel works on making the mobile developer experience at Square less arduous; by night he can be found breaking Bundler and CocoaPods. Before this whole “developer” thing, Samuel studied in the highly impractical Mathematics & Economics departments at UChicago, learning subjects such as “numbers”, “social theory”, and “memes”. When not coding, Samuel is often in the kitchen, marveling at the fact that dinner smells better than it looks. https://rubyonice.com/speakers/samuel_giddins
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 'Making CocoaPods Fast with Modern Ruby Tooling' features Samuel Giddins, who discusses the challenges of improving the performance of CocoaPods, a dependency manager for the Apple ecosystem, built with Ruby. The talk addresses how writing performant code is particularly difficult in Ruby and how CocoaPods had become slow when dealing with large-scale projects. Giddins shares his experience at Square, where he and his team reduced the time it takes to run the `pod install` command by half, from three minutes to one and a half minutes, by making less than 200 lines of code changes. Key points discussed include: - **Understanding CocoaPods**: Giddins describes CocoaPods' role as a blend of RubyGems and Bundler, serving as both a package manager and a dependency manager. He notes the challenges presented by Xcode, Apple's proprietary tool for app compilation, which requires complex handling of dependencies. - **Importance of Performance**: Giddins emphasizes the significance of optimizing performance in development environments, highlighting the impact on developer productivity and business value. He argues that performance improvement is an active process that doesn't occur spontaneously. - **Identifying Performance Bottlenecks**: Giddins explains different methodologies to diagnose slow performance, including profiling techniques. He mentions the usefulness of allocation profilers and manual profiling, sharing his development of a tool called Chronometer to enhance profiling efficiency in CocoaPods. - **Architectural Improvements**: A significant part of the discussion focuses on fundamental architecture issues within CocoaPods, particularly regarding graph traversal inefficiencies. Giddins illustrates how they switched to a set-based approach to avoid redundant visits during graph traversal, leading to non-trivial performance gains. - **Challenges Still Present**: He mentions persistent performance limitations due to Ruby's characteristics and CocoaPods' older design. He discusses issues with caching, memory allocation, and data structure efficiency that impede overall performance. In conclusion, Giddins highlights the ongoing nature of optimizing CocoaPods, recognizing its frequent usage and the continuous need to assess and improve performance metrics. The development team remains focused on addressing existing and future performance concerns to enhance developer experiences within the iOS ecosystem. The talk not only reveals the technical aspects of performance improvements but also the importance of measurable outcomes in software development productivity.
Suggest modifications
Cancel