Performance
Download
1 / 14

Performance - PowerPoint PPT Presentation


  • 123 Views
  • Uploaded on

Performance. Code Complete 2 – Chapters 25/26 and Chapter 7 of K&P Compare today to 44 years ago The Burroughs B1700 – circa 1974 Why do we care about performance today? First principle of optimization: DON’T Second principle of optimization: DON’T Third principle of optimization DON’T.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Performance' - woods


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Performance
Performance

  • Code Complete 2 – Chapters 25/26 and Chapter 7 of K&P

  • Compare today to 44 years ago

    • The Burroughs B1700 – circa 1974

  • Why do we care about performance today?

  • First principle of optimization:

    • DON’T

  • Second principle of optimization:

    • DON’T

  • Third principle of optimization

    • DON’T


Optimization
Optimization

  • Easiest technique is to turn on the compiler’s optimizer

  • In VS.NET do a release build vs. debug build

  • Makes debugging harder

  • Hopefully doesn’t introduce new bugs

    • But could if there are non-deterministic parts of the program already

    • Also, debug mode is known to initialize locations for easy debugging but your code may count on that initialization


Optimization 2
Optimization - 2

  • Measurement is the critical component before deciding that you should worry about performance improvement

  • Make sure that you have good regression tests

    • Eliminates issue of optimizing something so it is so fast that you forgot to preserve the semantics and it doesn’t work any more 

  • Often algorithm analysis is the most fruitful place to start

  • How much faster is binary search than linear search on a one million element array?

  • See you in CS 4150!


Targets of improvement
Targets of Improvement

  • Program design: how a program is divided into classes may make it hard or easy to improve performance

  • Class & method design: choice of data types, algorithms

  • Operating system interactions

  • Code compilation: the right compiler may be all you need

  • Hardware: why not a hardware upgrade?

  • Code tuning: small scale changes to correct code with hopes of running faster (or smaller)


Timing
Timing

  • Easiest is to use time mechanism provided by system

    • 5 faith> time clean.csh

    • 0.0u 2.0s 0:08 24% 0+0k 0+0io 0pf+0w

    • 6 faith>

  • How about on Windows?

    • C:\Documents and Settings\kessler>time

    • The current time is: 10:06:08.06

    • Enter the new time:

    • C:\Documents and Settings\kessler>

  • So, what should you do on systems like Windows to get a coarse view of time?

    • #include <time.h>

    • double begin = clock();

    • double result = clock() – begin; // time in ms


The pareto principle
The Pareto Principle

(20% of Italians have 80% of the wealth)

You can get 80% of the result with 20% of the effort.

  • 20% of a program consumes 80% of its execution time (Boehm)

  • Less than 4% of a program accounts for more than 50% of the run time (Knuth)

  • Measure your code for hot spots, and then put resources into optimizing the small portion(s) of the program used most


Profiling
Profiling

  • What is a profile?

    • A measure of where a program spends its time

  • Provides more detailed timing information about a program

    • Number of times a function is called

    • Percentage of execution time spent in a function

    • Some provide the information in a line by line fashion

  • Profiling is effective for finding hot spots in a program

  • How does a profiler work?


Misconceptions
Misconceptions

  • Reducing the lines of code in a high-level language improves the speed or size of the resulting machine code

  • Certain operations are probably faster or smaller than others

  • You should optimize as you go

  • A fast program is as important as a correct one

  • A fast program is as important as a readable one


Strategies
Strategies

  • After deciding that you HAVE to optimize:

    • Measure

    • Track down slow parts

    • Remember important principle – if you improve one part so it takes no time, your program will only get x% faster if the part you are optimizing is taking x% of the time

  • Use a better algorithm or data structure

    • Try to determine complexity

  • Enable compiler optimizations

    • Measure before and after to make sure it is worth it

  • Tune the code

    • Adjust the loops and expressions to be faster

  • Don’t optimize what doesn’t matter

    • Rule of thumb – your time vs. how much time you’ll save over the lifetime of the program


Tuning the code
Tuning The Code

  • Collect common subexpressions

    • Is probably not worth it these days

  • Reduction in strength of operations

    • Again is probably not worth it these days

  • Unroll or eliminate loops

    • Short loop vs. 3 lines

    • Again – many good compilers will do this already

  • Cache frequently used values

    • Again – compilers are pretty good at this

  • Rewrite in a lower-level language

    • Costs programmer time

  • Good, modern compilers

    • Already do much of this

    • Are often better at it than you are

    • Are faster

    • Better at optimizing straightforward code than tricky code

    • Can often improve your code by 40% or more!!


Quote from mcconnell about code tuning optimizations
Quote from McConnell – About Code-Tuning Optimizations

“Computers are dramatically faster and memory is more plentiful. In the first edition [written 10 years ago], I ran most of the tests in this chapter [26] 10,000 to 50,000 times to get meaningful, measurable results. For this edition I had to run most tests 1 million to 100 million times. When you have to run a test 100 million times to get measurable results, you have to ask whether anyone will ever notice the impact in a real program. Computers have become so powerful that for many common kinds of programs, the level of performance optimization discussed in this chapter has become irrelevant. … People writing desktop applications may not need this information, but people writing software for embedded systems, real-time systems, and other systems with strict speed or space restrictions can still benefit from it.” – pg 643-644, Chapter 26.7, Code Complete 2.


Space efficiency
Space Efficiency

  • Time is not the only measure of a program’s performance

    • Which is more important space or time?

  • First principle of space optimization?

    • Don’t do it

  • What is paging? Caching? Why do we care?

  • Use the smallest possible data type

    • int vs. short

  • Don’t store what you can easily recompute

    • What tradeoff is going on here?

    • Image compression description is a good one to consider


Summary
Summary

  • The best is the enemy of the good

  • Don’t do space or time optimization

    • Unless you have to

    • Unless you have measured it

    • Unless you know where the hot spots are

    • Unless you decide what real improvements are possible

  • Check algorithms and data structures

    • Can have the single most benefit

    • “Don’t put lipstick on a pig!!! ”

  • Turn on compiler optimization

  • Be careful of hardware differences

    • A PC with a big cache vs. no cache

  • Resort to detailed tuning only as last resort or if your environment demands it


Notes about tools
Notes About Tools

  • VS.Net 2005 has its own performance tools which was demonstrated in discussion yesterday


ad