De-Mystifying Software Performance Optimization

This paper discusses software performance in a very practical light and addresses the problem of optimizing performance in a way that developers can understand and apply across a very wide variety of applications and solutions. Its goal is to give the average software developer and IT professional a working knowledge of the process, tools, and best-known methods required for diagnosing, root causing and addressing performance problems in modern software applications.

Start here: beginning to quantify performance
Often, the most difficult task of all is simply identifying the need for performance engineering in a given product. Without a basis for comparison, one could argue whether or not the need even exists. If, for no other reason, consider the end user. Whether that person is an IT professional managing hundreds of servers or a PC gaming enthusiast, gaining more performance from software results in cost savings for everyone. Cost savings means a better overall user experience and simpler solutions that yield greater ease of management. For these reasons and many others, performance should be a primary consideration, rather than an afterthought.

In order for software performance to become practical, it must first be quantifiable. What exactly is required? First, one must identify a metric for measuring an application's performance. This may seem to be an easy task, but it is more often than not quite complicated. Some software applications simply do not lend themselves to measurement. Moreover, even if a metric seems readily apparent or obvious, how does one know it is the right thing to measure? The only way to answer this question is to ask more questions:

  • What does the application do? (i.e., calculations, analytics, modeling, graphics rendering)
  • What system components are stressed during runtime? (i.e., CPU, memory, graphics, disks, network)
  • With what metric might the end-user be most concerned? (i.e., startup time, request-processing time, user experience)
  • Are there several components or tiers that the performance engineer should consider? (i.e ., Web, database, application, network services)
  • What comprises a ' representative ' end-to-end solution? (i.e., interaction between multiple systems or nodes)

Subscribers who liked this article also read:
Boosting Cryptography Performance with Intel® Libraries
by Muneesh Nagpal, server applications engineer, Core Software Divisio...

If you're interested in this topic, these articles may be helpful:

Intel® Integrated Performance Primitives 4.1
Intel® Integrated Performance Primitives (Intel® IPP) is a library o...
High-performance MySQL: optimization, backups, replication, load balancing & more
by Jeremy Zawodny and Derek J. Balling, O'Reilly Media Inc. As use...
Boosting Cryptography Performance with Intel® Libraries
by Muneesh Nagpal, server applications engineer, Core Software Divisio...
Fundamentals of Web site acceleration: performance starts at the Web server
Port80 Software Inc. What best practices can developers use in Web ...
Turn performance killers into performance enablers
by Alan Zeichick, principal analyst, Camden Associates. Intel Corp. ...

Related Jobs:

IS Project Manager #187480 - MN - Plymouth - UnitedHealth Group
IS Project Manager - Plymouth, MN 187480 Job Description...
Sofware Applications Development Engineer #6549 - CA - Berkeley - Yahoo! Inc.
Sofware Applications Development Engineer Requisition ID 6549 Loca...
Senior Applications Developer #186467 - CT - Hartford - UnitedHealth Group
Senior Applications Developer - Hartford, CT, Greenville, SC, or Bas...
Software Engineer - CA - Los Angeles - Flexilis, Inc.
Flexilis is solving big problems on small devices. We are looking for ...
Manager, Derivatives/Middle Office Infrastructure Support #PS-2687 - CA - San Francisco - Barclays Global Investors
Barclays Global Investors (BGI) is America\'s largest money manager, p...
Technical Support Specialist #2007RSA-MJATH84810IL33 - IA - Indianapolis - Computer Sciences Corporation
Principal Duties and Essential Job Functions: The employee carries ou...
Senior Applications Developer #187578 - NJ - Basking Ridge - UnitedHealth Group
Senior Applications Developer - Basking Ridge, NJ 187578 ...
Software Engineer, Lead #6356 - CA - Sunnyvale - Yahoo! Inc.
Software Engineer, Lead Requisition ID 6356 Location Sunnyvale, CA...
Sr. DataStage Developer #183881 - CT - Rocky Hill - UnitedHealth Group
Sr. DataStage Developer 183881 Job Description Su...
Director, Enterprise Technology Strategy & Planning #24924 - CA - Beverly Hills - Hilton Hotels Corporation
This position provides client collaboration and strategic leadership i...