SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
A Challenging Craft
That‘s me
 My day to day job is to help customers
 fixing software performance

                                                  Fabian
 People really struggle with performance
 But most of them struggle with coding as well



                   If creating good software is a craft,
                    performance should be one as well

  Customer
 Some say:
 „creating software is art“

 Art and software development
 need creativity
                                 Art
 Fixing performance is
 often considered magic

 Magic is something
   only you understand
   you do in a hard to
                          Magic
    follow fashion
 Correctness in detail


 Research and verification




                              Craft
 All types share
   Passion
   Learning
   Experience



                    Which way?
 Value == Money


 We need a business case
 for performance

                                   Money
 What is the impact of     (in parts of the world)
 bad performance?
 Amazon measured the
 impact of 100ms delay

 Sales dropped by 1%


 In a year that would be   Typical (?) retailer
 245 Million USD
 Instable or slow software
 delays time to market

 Slow software is no longer
 accepted by customers
                               New?
 Insurances like to send
 paper via mail

 Not meeting deadlines can
 cause
   Legal issues
                              Snail Mail
   Canceled contracts
   Loss of money
Is A Craft
 Calculate Execution Time
   Code x = 5ms
   Code y = 2*x = 10ms


 Know code in advance
 Waterfall approach                    Performance
                                        Engineering


 Proving the performance of software
 is more difficult than proving the correct function
 We prove functional
 correctness with automated
 tests

 High coverage

                                          Look closely


 Run examples and see if they are fast
 Done late in project


 If done at all
                               How much load
                              breaks the system?

 No chance to fix anything
 Avoid human errors


 Require machine decidable
 fail / pass check

 What is the measure?        42cm are fast?
 Functionality is independent
 of the environment

 Performance characteristics
 can vary
   Unusable slow
                                 Our Environment
   Lightning fast
 Underpowered hardware


 Loaded with tools
 and stuff

                                Developers
 Luckily not the production   driving fast
 environment
 More power


 But also more load


 How much faster is
 production than development?    Crawling Production


 Any estimation on how much better or worse the
 environments are is incorrect
 Real performance tests
 need real systems

 Test in production


 Clone production         Stop playing
 infrastructure
 Amount of data is
 unpredictable

 Application usage is
 unpredictable
                                     Tweets per second


 How thought of using Twitter for build notification?
Dev             Prod
 Test Test1     Fabian Lange
 Test Test2     Uwe Friedrichsen
 Test Test3     Mirko Novakovic
 Showing 3/3    Showing 3/6,434,867
 Syntethic load tests are
  unrealistic

 No application has hundreds
  of users doing the same
  procedure again and again
                                         Load Baselines


 Understanding real load is difficult
 Real usage cannot
 be generated

 Real usage can be
 captured & replayed
                       Live Systems are live
 Be careful 
 Continous performance tests


 Close to real setup
                                App Monitor

 Observe production behavior


 Fix issues fast
 Conflicting interests
   Development: Change
   Operations: Stability

                            Another Movement
 Need to work together
Is A Challenge
 Can‘t we do anything before
 production?

 We want to deliver something,   Let users test?
 which works perfectly!
 Optimizations might have
 no impact

 Micro-Optimizations are    Missed Target
 dangerous
 Soft Measure


 Works good for code quality
                                          Sonar



 Are there performance best practices?
 Yahoo Best Practices


 Google Best Practices


 Plenty of tools
                          Good Waterfalls

 Work well
 Naive implementation looks fine




 But is not multithreaded
 This is threadsafe




 But slow
 This is correct




 Correct synchronisation is hard
 Check Log Level (Ugly)




 Check Log Level (Nicer)
 Static SimpleDateFormat is wrong




 Working with Dates
 and Calendars is
 very expensive!
 Some people misuse it as loop




 Results are unexpected behavior or slow execution
 Analyzes Java Bytecode


 Knows 58 Performance Bugs


 Most are rather trivial
                              Indeed finds bugs
 Detecting deadlocks
 is difficult

 Many thesis's on deadlock
 detection
                              Verifies Java
 Few code
 Hidden Gem


 Tries to cause Deadlocks



                                   IBM
                             Support Assistant
 We need more and reliable
   Code Performance Metrics
   Best Practices
   Tools
Is A Challenging Craft
Q&A
   Art                                                  YSlow
    flickr.com/photos/37202375@N03/3490107873             developer.yahoo.com/yslow
   Magic                                                Pagespeed
    flickr.com/photos/princes_milady/4238912548           code.google.com/speed/page-speed
   Crossroads                                           Java Locking
    flickr.com/photos/40481200@N06/4857965280             en.wikipedia.org/wiki/Double-checked_locking
   Envelopes                                            PHP Ternary Operator
    flickr.com/photos/creatingmotherhood/3663914542       fabien.potencier.org/article/48/the-php-ternary-
                                                          operator-fast-or-not
   Test
    flickr.com/photos/cayusa/2159980025                  JavaScript for .. In
                                                          stackoverflow.com/questions/500504/javascript-for-
   Scales                                                in-with-arrays
    flickr.com/photos/reinvented/309512320
                                                         Findbugs
   Tape Measure                                          findbugs.sourceforge.net
    flickr.com/photos/hippie/2466583497
                                                         Jlint
   World                                                 jlint.sourceforge.net
    flickr.com/photos/heimdahlrecounts/4346082743
                                                         IBM Multicore SDK
   Toys                                                  www-
    flickr.com/photos/sbluerock/364123380                 01.ibm.com/support/docview.wss?uid=swg21456945
   TPS
    flickr.com/photos/twitteroffice/5681263084
   Bananas
    flickr.com/photos/design-dog/1249337589
   Dart
    flickr.com/photos/malavoda/2369876508

Weitere ähnliche Inhalte

Was ist angesagt?

Engineering culture
Engineering cultureEngineering culture
Engineering culture
Pamela Fox
 
Failure the-good-parts
Failure the-good-partsFailure the-good-parts
Failure the-good-parts
legendofklang
 

Was ist angesagt? (19)

Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb Edition
 
DevOps Note 20120224
DevOps Note 20120224DevOps Note 20120224
DevOps Note 20120224
 
Application compatibility final
Application compatibility finalApplication compatibility final
Application compatibility final
 
Adam carmi
Adam carmiAdam carmi
Adam carmi
 
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
 
Engineering culture
Engineering cultureEngineering culture
Engineering culture
 
Justin Ison
Justin IsonJustin Ison
Justin Ison
 
Website qa
Website qaWebsite qa
Website qa
 
Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)
 
Automated Battle Scars Se Conf 2011
Automated Battle Scars Se Conf 2011Automated Battle Scars Se Conf 2011
Automated Battle Scars Se Conf 2011
 
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
 
Bootstrap cheat-sheet-websitesetup.org
Bootstrap cheat-sheet-websitesetup.org Bootstrap cheat-sheet-websitesetup.org
Bootstrap cheat-sheet-websitesetup.org
 
A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...
 
Chaos Engineering
Chaos EngineeringChaos Engineering
Chaos Engineering
 
Be a Quality Evangelist
Be a Quality EvangelistBe a Quality Evangelist
Be a Quality Evangelist
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 
Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?
 
Chaos Engineering: Injecting Failure for Building Resilience in Systems
Chaos Engineering: Injecting Failure for Building Resilience in SystemsChaos Engineering: Injecting Failure for Building Resilience in Systems
Chaos Engineering: Injecting Failure for Building Resilience in Systems
 
Failure the-good-parts
Failure the-good-partsFailure the-good-parts
Failure the-good-parts
 

Andere mochten auch

Andere mochten auch (6)

Eclipse Rich Ajax Platform
Eclipse Rich Ajax PlatformEclipse Rich Ajax Platform
Eclipse Rich Ajax Platform
 
#smabuja: SEO, Blogs and LinkedIn
#smabuja: SEO, Blogs and LinkedIn#smabuja: SEO, Blogs and LinkedIn
#smabuja: SEO, Blogs and LinkedIn
 
Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.
Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.
Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.
 
SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012
 
Aspects of modern APM solutions
Aspects of modern APM solutionsAspects of modern APM solutions
Aspects of modern APM solutions
 
Web Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 TalkWeb Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 Talk
 

Ähnlich wie Performance - a challenging craft

10 Ways To Improve Your Code( Neal Ford)
10  Ways To  Improve  Your  Code( Neal  Ford)10  Ways To  Improve  Your  Code( Neal  Ford)
10 Ways To Improve Your Code( Neal Ford)
guestebde
 
I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application Testing
Peter Presnell
 

Ähnlich wie Performance - a challenging craft (20)

Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!
 
Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!
 
XRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster AppsXRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster Apps
 
Designing Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web ApplicationsDesigning Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web Applications
 
10 Ways To Improve Your Code( Neal Ford)
10  Ways To  Improve  Your  Code( Neal  Ford)10  Ways To  Improve  Your  Code( Neal  Ford)
10 Ways To Improve Your Code( Neal Ford)
 
Tec314f
Tec314fTec314f
Tec314f
 
Testing in a glance
Testing in a glanceTesting in a glance
Testing in a glance
 
10 Ways To Improve Your Code
10 Ways To Improve Your Code10 Ways To Improve Your Code
10 Ways To Improve Your Code
 
Virtual Data : Eliminating the data constraint in Application Development
Virtual Data :  Eliminating the data constraint in Application DevelopmentVirtual Data :  Eliminating the data constraint in Application Development
Virtual Data : Eliminating the data constraint in Application Development
 
Tec314
Tec314Tec314
Tec314
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open Source
 
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
 
TxJS 2011
TxJS 2011TxJS 2011
TxJS 2011
 
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!
 
I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application Testing
 
Chaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosChaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just Chaos
 
Why test with flex unit
Why test with flex unitWhy test with flex unit
Why test with flex unit
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
 
Taming the Testing Beast - AgileDC 2012
Taming the Testing Beast - AgileDC 2012Taming the Testing Beast - AgileDC 2012
Taming the Testing Beast - AgileDC 2012
 
Zagat.com Case Study (DrupalCon Denver 2012)
Zagat.com Case Study (DrupalCon Denver 2012)Zagat.com Case Study (DrupalCon Denver 2012)
Zagat.com Case Study (DrupalCon Denver 2012)
 

Mehr von Fabian Lange

Web Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkWeb Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 Talk
Fabian Lange
 

Mehr von Fabian Lange (7)

The SPDY Protocol
The SPDY ProtocolThe SPDY Protocol
The SPDY Protocol
 
Web Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkWeb Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 Talk
 
Agile Development of High Performance Applications
Agile Development of High Performance ApplicationsAgile Development of High Performance Applications
Agile Development of High Performance Applications
 
Rich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich ClientRich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich Client
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Codecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseCodecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San Jose
 
Full Stack Web Application Performance Tuning
Full Stack Web Application Performance TuningFull Stack Web Application Performance Tuning
Full Stack Web Application Performance Tuning
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

Performance - a challenging craft

  • 2. That‘s me  My day to day job is to help customers fixing software performance Fabian  People really struggle with performance  But most of them struggle with coding as well  If creating good software is a craft, performance should be one as well Customer
  • 3.
  • 4.  Some say: „creating software is art“  Art and software development need creativity Art
  • 5.  Fixing performance is often considered magic  Magic is something  only you understand  you do in a hard to Magic follow fashion
  • 6.  Correctness in detail  Research and verification Craft
  • 7.  All types share  Passion  Learning  Experience Which way?
  • 8.
  • 9.
  • 10.
  • 11.  Value == Money  We need a business case for performance Money  What is the impact of (in parts of the world) bad performance?
  • 12.  Amazon measured the impact of 100ms delay  Sales dropped by 1%  In a year that would be Typical (?) retailer 245 Million USD
  • 13.  Instable or slow software delays time to market  Slow software is no longer accepted by customers New?
  • 14.  Insurances like to send paper via mail  Not meeting deadlines can cause  Legal issues Snail Mail  Canceled contracts  Loss of money
  • 16.  Calculate Execution Time  Code x = 5ms  Code y = 2*x = 10ms  Know code in advance  Waterfall approach Performance Engineering  Proving the performance of software is more difficult than proving the correct function
  • 17.  We prove functional correctness with automated tests  High coverage Look closely  Run examples and see if they are fast
  • 18.  Done late in project  If done at all How much load breaks the system?  No chance to fix anything
  • 19.  Avoid human errors  Require machine decidable fail / pass check  What is the measure? 42cm are fast?
  • 20.  Functionality is independent of the environment  Performance characteristics can vary  Unusable slow Our Environment  Lightning fast
  • 21.  Underpowered hardware  Loaded with tools and stuff Developers  Luckily not the production driving fast environment
  • 22.  More power  But also more load  How much faster is production than development? Crawling Production  Any estimation on how much better or worse the environments are is incorrect
  • 23.  Real performance tests need real systems  Test in production  Clone production Stop playing infrastructure
  • 24.  Amount of data is unpredictable  Application usage is unpredictable Tweets per second  How thought of using Twitter for build notification?
  • 25. Dev Prod  Test Test1  Fabian Lange  Test Test2  Uwe Friedrichsen  Test Test3  Mirko Novakovic  Showing 3/3  Showing 3/6,434,867
  • 26.  Syntethic load tests are unrealistic  No application has hundreds of users doing the same procedure again and again Load Baselines  Understanding real load is difficult
  • 27.  Real usage cannot be generated  Real usage can be captured & replayed Live Systems are live  Be careful 
  • 28.  Continous performance tests  Close to real setup App Monitor  Observe production behavior  Fix issues fast
  • 29.  Conflicting interests  Development: Change  Operations: Stability Another Movement  Need to work together
  • 31.  Can‘t we do anything before production?  We want to deliver something, Let users test? which works perfectly!
  • 32.  Optimizations might have no impact  Micro-Optimizations are Missed Target dangerous
  • 33.  Soft Measure  Works good for code quality Sonar  Are there performance best practices?
  • 34.  Yahoo Best Practices  Google Best Practices  Plenty of tools Good Waterfalls  Work well
  • 35.  Naive implementation looks fine  But is not multithreaded
  • 36.  This is threadsafe  But slow
  • 37.  This is correct  Correct synchronisation is hard
  • 38.  Check Log Level (Ugly)  Check Log Level (Nicer)
  • 39.  Static SimpleDateFormat is wrong  Working with Dates and Calendars is very expensive!
  • 40.
  • 41.  Some people misuse it as loop  Results are unexpected behavior or slow execution
  • 42.  Analyzes Java Bytecode  Knows 58 Performance Bugs  Most are rather trivial Indeed finds bugs
  • 43.  Detecting deadlocks is difficult  Many thesis's on deadlock detection Verifies Java  Few code
  • 44.  Hidden Gem  Tries to cause Deadlocks IBM Support Assistant
  • 45.  We need more and reliable  Code Performance Metrics  Best Practices  Tools
  • 47. Q&A
  • 48. Art  YSlow flickr.com/photos/37202375@N03/3490107873 developer.yahoo.com/yslow  Magic  Pagespeed flickr.com/photos/princes_milady/4238912548 code.google.com/speed/page-speed  Crossroads  Java Locking flickr.com/photos/40481200@N06/4857965280 en.wikipedia.org/wiki/Double-checked_locking  Envelopes  PHP Ternary Operator flickr.com/photos/creatingmotherhood/3663914542 fabien.potencier.org/article/48/the-php-ternary- operator-fast-or-not  Test flickr.com/photos/cayusa/2159980025  JavaScript for .. In stackoverflow.com/questions/500504/javascript-for-  Scales in-with-arrays flickr.com/photos/reinvented/309512320  Findbugs  Tape Measure findbugs.sourceforge.net flickr.com/photos/hippie/2466583497  Jlint  World jlint.sourceforge.net flickr.com/photos/heimdahlrecounts/4346082743  IBM Multicore SDK  Toys www- flickr.com/photos/sbluerock/364123380 01.ibm.com/support/docview.wss?uid=swg21456945  TPS flickr.com/photos/twitteroffice/5681263084  Bananas flickr.com/photos/design-dog/1249337589  Dart flickr.com/photos/malavoda/2369876508