Conference:March 6-8, 2017
Workshops:March 9-10, 2017
Presentation: From Concurrent to Parallel
Location:
- Churchill, G flr.
Duration
Day of week:
- Wednesday
Level:
- Intermediate
Persona:
- Developer, JVM
Key Takeaways
- Understand the factors contributing to exploitable parrellelism
- Learn how to analyze expected parallel behavior of Java stream pipelines
- Resist the temptation to optimize prematurely
Abstract
As core counts continue to increase, how we exploit hardware parallelism in practice shifts from concurrency — using more cores to handle more user requests — to parallelism — using more cores to solve data-intensive problems faster. This talk will explore the different goals, tools, and techniques involved between these various approaches, and how to analyze a computation for potential parallelism, with specific attention to the parallel stream library in Java.
Interview
"Most optimization is radically premature." Too many developers get obsessed with micro-performance details before they've even determined if their approach solves the business problem in front of them. We should first apply 100% of our brainpower to writing clear, correct, maintainable code that solves the business problem; only then should we ask whether we need to improve its performance -- and if so, by how much -- before attempting to optimize. Very often, clear, well-written code is already fast enough. "There's no such thing as magic performance dust." Parallelism is a useful tool for extracting performance when applied correctly, but it is still on us to understand the problem, cost model, and tradeoffs. "Just because you can, doesn't mean you should." The Java Streams API makes it easy to turn a computation parallel, but that doesn't mean parallelism is the right tool for all -- or even most -- problems. You still have to do the work to determine whether parallelism is going to get you a speedup. (If you even need a speedup.)
As Architect for the Java Language at Oracle, my role is to chart the future of the Java programming model. Languages need to continually evolve to meet ever-higher developer expectations, and runtimes need to continually evolve to adapt to ever-changing hardware. I'm currently working on a number of projects, both shorter- and longer-term, including: value types, pattern matching, better interaction between Java and native code/data, and improving serialization.
The audience should come away with a better understanding of what parallelism will, and won't offer them. This talk focuses on analysis, rather than measurement; it should be practical to analyze whether a problem (and the implementation of a solution) admits exploitable parallelism, and to identify the many possible sources through which impediments to parallel execution can sneak into our solution.
Both intermediate and advanced developers will benefit from this talk.
Similar Talks
Tracks
-
Architecting for Failure
Building fault tolerate systems that are truly resilient
-
Architectures You've Always Wondered about
QCon classic track. You know the names. Hear their lessons and challenges.
-
Modern Distributed Architectures
Migrating, deploying, and realizing modern cloud architecture.
-
Fast & Furious: Ad Serving, Finance, & Performance
Learn some of the tips and technicals of high speed, low latency systems in Ad Serving and Finance
-
Java - Performance, Patterns and Predictions
Skills embracing the evolution of Java (multi-core, cloud, modularity) and reenforcing core platform fundamentals (performance, concurrency, ubiquity).
-
Performance Mythbusting
Performance myths that need busting and the tools & techniques to get there
-
Dark Code: The Legacy/Tech Debt Dilemma
How do you evolve your code and modernize your architecture when you're stuck with part legacy code and technical debt? Lessons from the trenches.
-
Modern Learning Systems
Real world use of the latest machine learning technologies in production environments
-
Practical Cryptography & Blockchains: Beyond the Hype
Looking past the hype of blockchain technologies, alternate title: Weaselfree Cryptography & Blockchain
-
Applied JavaScript - Atomic Applications and APIs
Angular, React, Electron, Node: The hottest trends and techniques in the JavaScript space
-
Containers - State Of The Art
What is the state of the art, what's next, & other interesting questions on containers.
-
Observability Done Right: Automating Insight & Software Telemetry
Tools, practices, and methods to know what your system is doing
-
Data Engineering : Where the Rubber meets the Road in Data Science
Science does not imply engineering. Engineering tools and techniques for Data Scientists
-
Modern CS in the Real World
Applied, practical, & real-world dive into industry adoption of modern CS ideas
-
Workhorse Languages, Not Called Java
Workhorse languages not called Java.
-
Security: Lessons Learned From Being Pwned
How Attackers Think. Penetration testing techniques, exploits, toolsets, and skills of software hackers
-
Engineering Culture @{{cool_company}}
Culture, Organization Structure, Modern Agile War Stories
-
Softskills: Essential Skills for Developers
Skills for the developer in the workplace