A Walk Along the Complexity-Performance Curve

Software performance and complexity are related. It’s common for refactoring to introduce unanticipated regressions, and for performance optimisations to attract scrutiny in code review; how much performance improvement is worth a perceived loss of readability?

This presentation explores the relationship between complexity and performance through the lens of recent improvements to the Java String class, visiting continuous profiling and some assembly code along the way.

Interview:

What's the focus of your work these days?

I am currently working on a continuous profiling product that helps our users pinpoint and analyze performance problems and cost optimization opportunities.

What's the motivation for your talk at QCon London 2024?

To help the audience understand the different phases of code optimization, which tools to use to analyze problems in each phase, and the complex implications of taking action in each phase.

How would you describe your main persona and target audience for this session?

There will be something in this talk for a range of personas, so long as they are interested in Java/the JVM; for example, it will include an analysis of instruction profiles later on in the talk, which some may find enlightening, but this talk may not appeal to hardcore performance engineers. I would like to reach an audience that is suspicious of performance optimization or lacks knowledge and put different levels of optimization into context. 

Is there anything specific that you'd like people to walk away with after watching your session?

Be careful specifying public interfaces, which may constrain performance later, because solutions to constrained performance problems can be much more complex and require you to be aware of where your bottlenecks are at all times.


Speaker

Richard Startin

Senior Software Engineer @Datadog

Richard has over ten years experience working as a software engineer, primarily on big data and observability. Richard is an avid open source contributor and blogger. Richard currently works as a Senior Software Engineer at Datadog, where he has been working on tracing and profiling of applications running on the JVM.

Read more

Date

Monday Apr 8 / 10:35AM BST ( 50 minutes )

Location

Mountbatten (6th Fl.)

Topics

performance Profiling Java

Share

From the same track

Session

Panel: What Does the Future of Computing Look Like

Monday Apr 8 / 05:05PM BST

The future of computing promises to be revolutionary. This panel dives into cutting-edge advancements that will redefine how we interact with technology. We'll explore groundbreaking concepts and discuss their potential to transform our world.

Speaker image - Julia Lawall

Julia Lawall

Senior Scientist @INRIA

Speaker image - Matt Fleming

Matt Fleming

CTO @Nyrkiö, Former Linux Kernel Maintainer @Intel and @SUSE

Speaker image - Joe Rowell

Joe Rowell

Founding Engineer @poolside.ai, Low-Level Performance Engineer, Cryptographer and PhD Candidate @RHUL

Session Linux kernel

Opening the Box: Diagnosing Operating-System Task-Scheduler Behavior on Highly Multicore Machines

Monday Apr 8 / 11:45AM BST

An operating system task scheduler is responsible for placing tasks on cores and for selecting which task is allowed to run, at what time. As such, the scheduler is a critical component of any operating system and has a major impact on application performance.

Speaker image - Julia Lawall

Julia Lawall

Senior Scientist @INRIA

Session

Practical Benchmarking: How To Detect Performance Changes in Noisy Results

Monday Apr 8 / 03:55PM BST

Finding statistically significant changes in performance results has always been challenging but now that most of our code runs on hardware and infrastructure we don't own, we need methods and tools for detecting performance changes in noisy data.

Speaker image - Matt Fleming

Matt Fleming

CTO @Nyrkiö, Former Linux Kernel Maintainer @Intel and @SUSE

Session

Pitfalls of Unified Memory Models in GPUs

Monday Apr 8 / 01:35PM BST

Modern GPUs offer support for so-called unified memory, providing a universal address space for both CPUs and GPUs.

Speaker image - Joe Rowell

Joe Rowell

Founding Engineer @poolside.ai, Low-Level Performance Engineer, Cryptographer and PhD Candidate @RHUL

Session

Unconference: Performance Engineering Unleashed

Monday Apr 8 / 02:45PM BST

An unconference is a participant-driven meeting. Attendees come together, bringing their challenges and relying on the experience and know-how of their peers for solutions.