SlideShare uma empresa Scribd logo
1 de 160
Practicing at the Cutting Edge
Learning and Unlearning
about Performance
Martin Thompson - @mjpt777
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/java-evolution-c-c-plus-plus
Presented at QCon London
www.qconlondon.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Learning and
Unlearning
1. Brief History of Java
2. Evolving Design approach
3. An evolving Hardware platform
4. Changes in Culture
1.
Brief History of Java
1.0
1396
Java Timeline
97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
In the beginning Java was Oak
and Oak was slow
7651.41.31.21.1
How did it all start?
How did Java perform then?
...but everything must have a
beginning
1.0
1396
Java Timeline
97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
Netscape Navigator 2.0 & IE 3.0
with Applet support
7651.41.31.21.1
Ma, I don’t need to worry about
deleting objects any more...
...but we can distribute rich GUIs
without an installer
We could even do multi-threaded
apps on Windows 3.11
1.0
1396
Java Timeline
97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
Symantec and Microsoft
JIT Performance Wars
7651.41.31.21.1
Life with early JIT Compilers
...cross platform GUIs are
a real possibility
1.0
1396
Java Timeline
97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
Generational Garbage Collection
Servlets
7651.41.31.21.1
But then came the surprise win
Servlets vs CGI
Graph Theory!
1.0
1396
Java Timeline
97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
Hotspot Compiler
JRockit for x86
7651.41.31.21.1
EJB
1.0
1396
Java Timeline
97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
Native Threads on Linux + epoll
NIO
7651.41.31.21.1
Java Memory Model
1.0
1396
Java Timeline
97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
Java Util Concurrent + JMM
Class Data Sharing
7651.41.31.21.1
Herb decided to write an essay...
The free lunch
is over...
Java finds its way into our poor
little mobile phones
What about life on the Server?
EJB
EJB
1.0
1396
Java Timeline
97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
Escape Analysis
Register Allocation
Split Bytecode Verification
7651.41.31.21.1
What about our hero who freed us
from the EJB tar pit?
SQL too difficult?
The world of hardware
undergoes big changes!
High Frequency Trading
Milliseconds Matter...
...Microseconds
Matter...
...right from market
open...
...and especially after a
quiet period...
...it is like being at War
Memory Cliff
SHM, Locks, and Multi-core
Safepoints!!!
1.0
1396
Java Timeline
97 98 99 00 01 02 03 04 05 06 07 08 09 10 11 12
Tiered Compilation
G1 Garbage Collector
Compressed Pointers
7651.41.31.21.1
What does the near future hold?
sun.misc.Unsafe
What is everyone excited about?
What about other languages?
Now on with the story...
2.
Evolving Design Approach
GUI Era
Battle for the Desktop
Battle for the Desktop
What was the biggest
factor in performance?
People
Comms design is
significant to GUIs
Users love responsive interfaces
Modelling
“Big” Data Era
What do the following
companies have in common?
Huge product catalogues
PCM
Sales
Manufacturing
Warehousing
Logistics Partners
e-Procurement
Websites
Catalogues
Parsing
Data Modelling & Representation
Indexing
Set Theory Rocks!
Databases are very powerful!
Immutable Data Rocks!
JDBC Drivers Suck!!!
Stream Processing Rocks!
public void characters(char[] ch,
int start,
int length)
throws SAXException
public void characters(char[] ch,
int start,
int length)
throws SAXException
public void startElement(String uri,
String localName,
String qName,
Attributes atts)
throws SAXException
public String[] split(String regex)
public String[] split(String regex)
public Iterable<String> split(String regex)
public String[] split(String regex)
public Iterable<String> split(String regex)
public void split(String regex,
Collection<String> dst)
Modelling
OOP Set Theory
Design Paradigms
Transaction
Processing
Era
Synchronous designs
are seriously limited
Staged Event Driven Architecture
The importance of Latency
Latency given Throughput
Latency
Load
The issues with Concurrency
The Disruptor
The value of Determinism
The value of pure Functions
Modelling
OOP Set Theory
Design Paradigms
FP
3.
Evolving Hardware
Platform
Mechanical Sympathy
All Storage is Tape
Networks are faster than
Storage
Memory Access Patterns Matter
What if you could build a HashMap
with reified generics
and arrays of structures?
Buckets
A1
Bob
Hash
Buckets
Key Value Next
A1
Bob
Hash
Buckets
FF Jim
Key Value Next
HashKey Value Next
A1
Bob
Hash
Buckets
FF Jim
Key Value Next
HashKey Value Next
C7
Fred
HashKey Value Next
Buckets Key Value Hash Next
0
A1 Bob 4 -1
Buckets Key Value Hash Next
1
0
A1 Bob 4 -1
Buckets Key Value Hash Next
C7 Fred 2 -1
1
0
A1 Bob 4 2
Buckets Key Value Hash Next
C7 Fred 2 -1
FF Jim 4 -1
.Net Dictionary is 10X faster
than HashMap for 2GB of data
ObjectLayout
PackedObjects
Value Types (Arrays 2.064)
“Functional Programming will solve
the multi-core problem”
- Functional Fanboi
Persistent Data Structures
Market
HAMT Ref
*
HAMT
Venue
*
HAMT
Instrument
*
HAMT
Order
*
Market
HAMT Ref
*
HAMT
Venue
*
HAMT
Instrument
*
HAMT
Order
*
<< CAS Failure? >>
Market
HAMT Ref
*
HAMT
Venue
*
HAMT
Instrument
*
HAMT
Order
* ModelDepth
Threads
<< CAS Failure? >>
Shared Nothing to Scale
Think Transputers
but with message
passing via SHM
4.
Changes in Culture
Measure Everything
Questions?
Blog: http://mechanical-sympathy.blogspot.com/
Twitter: @mjpt777
“It does not matter how intelligent you are,
if you guess and that guess cannot be backed
up by experimental evidence -
then it is still a guess.”
- Richard Feynman
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/java-
evolution-c-c-plus-plus

Mais conteúdo relacionado

Semelhante a Practicing at the Cutting Edge

Semelhante a Practicing at the Cutting Edge (20)

Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)
 
Geoscience and Microservices
Geoscience and Microservices Geoscience and Microservices
Geoscience and Microservices
 
The State of Wicket
The State of WicketThe State of Wicket
The State of Wicket
 
Microservices Chaos Testing at Jet
Microservices Chaos Testing at JetMicroservices Chaos Testing at Jet
Microservices Chaos Testing at Jet
 
DSR microservices
DSR microservicesDSR microservices
DSR microservices
 
Apache Beam (incubating)
Apache Beam (incubating)Apache Beam (incubating)
Apache Beam (incubating)
 
MWLUG 2014: Modern Domino (workshop)
MWLUG 2014: Modern Domino (workshop)MWLUG 2014: Modern Domino (workshop)
MWLUG 2014: Modern Domino (workshop)
 
C* Summit 2013: Real-time Analytics using Cassandra, Spark and Shark by Evan ...
C* Summit 2013: Real-time Analytics using Cassandra, Spark and Shark by Evan ...C* Summit 2013: Real-time Analytics using Cassandra, Spark and Shark by Evan ...
C* Summit 2013: Real-time Analytics using Cassandra, Spark and Shark by Evan ...
 
Lean engineering for lean/balanced teams: lessons learned (and still learning...
Lean engineering for lean/balanced teams: lessons learned (and still learning...Lean engineering for lean/balanced teams: lessons learned (and still learning...
Lean engineering for lean/balanced teams: lessons learned (and still learning...
 
Netflix Edge Engineering Open House Presentations - June 9, 2016
Netflix Edge Engineering Open House Presentations - June 9, 2016Netflix Edge Engineering Open House Presentations - June 9, 2016
Netflix Edge Engineering Open House Presentations - June 9, 2016
 
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI ProjectsDiscovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
Discovering Your AI Super Powers - Tips and Tricks to Jumpstart your AI Projects
 
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk AdvocacyCincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
 
Squeak
SqueakSqueak
Squeak
 
The Netflix Way to deal with Big Data Problems
The Netflix Way to deal with Big Data ProblemsThe Netflix Way to deal with Big Data Problems
The Netflix Way to deal with Big Data Problems
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?
 
Drools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationDrools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentation
 
Engineering Software and Software Lifecycle
Engineering Software and Software LifecycleEngineering Software and Software Lifecycle
Engineering Software and Software Lifecycle
 
VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...
VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...
VEGAS: The Missing Matplotlib for Scala/Apache Spark with Roger Menezes and D...
 

Mais de C4Media

Mais de C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

Practicing at the Cutting Edge