Top Banner
Announcements You survived midterm 2! No Class / No Office hours Friday
29

Announcements

Jan 01, 2016

Download

Documents

joan-schneider

Announcements. You survived midterm 2! No Class / No Office hours Friday. Its all about speed!. … well usually, sometimes its about memory Portable devices, low power devices Today we will focus on: What makes computers fast/slow How to reason about algorithms - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Announcements

Announcements

You survived midterm 2!No Class / No Office hours Friday

Page 2: Announcements

Its all about speed!… well usually, sometimes its about memory

Portable devices, low power devices

Today we will focus on:What makes computers fast/slowHow to reason about algorithms

We have seen many ways to do a particular taskHow do we choose which way we should write our

program?

Page 3: Announcements

Big speed differencesMany of the techniques we’ve learned take no

time at all in other applications

Select a figure in Word. It’s automatically inverted as fast as you can click.

Color changes in Photoshop happen as you change the slider Increase or decrease red? Play with it and see it

happen live.

Page 4: Announcements

What makes my program fast?

Is it that Photoshop is so fast?

Or that Python is so slow?

It’s some of both—it’s not a simple problem with an obvious answer.

We’ll consider two issues:How fast can computers getWhat’s not computable, no matter how fast you go

Page 5: Announcements

What a computer really understands

Computers really do not understand Python, nor Java, nor any other language.

The basic computer only understands one kind of language: machine language.Machine language consists of instructions to the

computer expressed in terms of values in bytes.These instructions tell the computer to do very

low-level activities.

Page 6: Announcements

Machine language trips the right switches

The computer doesn’t really understand machine language.

The computer is just a machine, with lots of switches that make data flow this way or that way.

Machine language is just a bunch of switch settings that cause the computer to do a bunch of other switch settings.

We interpret those switches to be addition, subtraction, loading, and storing. In the end, it’s all about encoding. A byte of

switches

Page 7: Announcements

Assembler and machine languageMachine language looks just like a bunch of

numbers.

Assembler language is a set of words that corresponds to the machine language. It’s often one-to-one relationship.A word of assembler equals one machine language

instruction, typically.(Often, just a single byte.)

Page 8: Announcements

Assembler instructionsAssembler instructions tell the computer to do

things like:Store numbers into particular memory locations or

into special locations (variables) in the computer.Test numbers for equality, greater-than, or less-

than.Add numbers together, or subtract them.

Page 9: Announcements

An example assembly language program

LOAD 10,R0 ; Load special variable R0 with 10

LOAD 12,R1 ; Load special variable R1 with 12

SUM R0,R1 ; Add R0 and R1, Put the result in R1

STOR R1,#45 ; Store the result into memory location #45

Recall that we talked about memory as a long series of boxes.

Each one has a location (number) (like #45).

The “special variables” are often called “registers”. That is why they begin with the letter “R”.

Page 10: Announcements

Assembler -> Machine

LOAD 10,R0 ; Load special variable R0 with 10

LOAD 12,R1 ; Load special variable R1 with 12

SUM R0,R1 ; Add R0 and R1, Put the result in R1

STOR R1,#45 ; Store the result into memory location #45

Might appear in memory as just 12 bytes:

01 00 10

01 01 12

02 00 01

03 01 45

Page 11: Announcements

Machine language is executed very quickly

Imagine a relatively slow computer today (not latest generation) having a clock rate of 1.5 Gigahertz.

What that means exactly is hard to explain,but let’s interpret it as processing 1.5 billion bytes per second.

Those 12 bytes would execute inside the computer, then, in 12/1,500,000,000th of a second!

Page 12: Announcements

Other factors affect speedProcessor Speed

Cache located on the processor

Memory speed (and size!)

Hard Drive speed

Operating System efficiency

Page 13: Announcements

Hard DriveSlowest form of storage

Unlike RAM, Hard Drive storage is “permanent” It survives after you turn the power off

Page 14: Announcements

Storage relationshipsIf you have too little RAM, your computer will

store some things on hard disk. It will be slower to bring back into RAM for the

computer to use it.

The system bus describes how fast things can move around your computer.

Network is even slower than the hard drive If you’re grabbing a web page from the network,

onto the hard drive, and into RAM, the network speed will be the limiting factor.

Page 15: Announcements

How do we compare algorithms?

There’s more than one way to search.How do we compare algorithms to say that one is

faster than another?

Computer scientists use something called Big-O notation It’s the order of magnitude of the algorithm

Big-O notation tries to ignore differences between languages, even between compiled vs. interpreted, and focus on the number of steps to be executed.

Page 16: Announcements

What question are we trying to answer?

If I am given a larger problem to solve (more data), how is the performance of the algorithm affected?

If I change the input, how does the running time change?

Page 17: Announcements

We want to choose the algorithm with the best

complexity

We want an algorithm which will be fastA “lower” complexity mean an algorithm will

perform better on large input

Page 18: Announcements

Finding something in the phone bookO(n) algorithm

Start from the beginning.Check each page, until you find what you want.

Not very efficientBest case: One stepWorse case: n steps where n = total entries in

phone bookAverage case: n/2 steps

Page 19: Announcements

Implementing a Linear Search – slightly different

def findInList(something, alist):

status = False

for item in alist:

if (item == something):

status = True

return status

Page 20: Announcements

Running our Search Algorithm

>>> print(findInList ("bear",["apple","bear","cat","dog","elephant"]))

True

>>> print(findInList ("giraffe",["apple","bear","cat","dog","elephant"]))

False

Page 21: Announcements

Why is it linear?Step 1) What is the input to the algorithm?

Well the function takes a list and an element we are looking for

Step 2) How much work are we doing?We compare each element in the list to the

element we are looking forLets assume we can test equality in one “step” or

one “unit of work”

Page 22: Announcements

Implementing a Linear Search

def findInList(something, alist):

status = False

for item in alist: how much work we perform

if (item == something): piece of work

status = True

return status

Page 23: Announcements

Implementing a Linear Search – slightly better

def findInList(something, alist):

for item in alist:

if (item == something):

return True

return False

Page 24: Announcements

So why do we bother with linear search?

Our data might not be ordered!

Notice that our faster algorithms required our data to be orderedWe say that ordered data is sorted

Challenge question: Is it faster to linearly search through unordered data, or to sort it, and then use a binary search?We will answer this next week!

Page 25: Announcements

A better search in a sorted list

O(log n) (log2 n = x where 2x=n)

Split the phone book in the middle.Is the name you’re at before or after the page

you’re looking at?If after, look from the middle to the end.If before, look from the start to the middle.

Keep repeating until done

More efficient:Best case: It’s the first place you look.Average and worst case: log n steps

Page 26: Announcements

Implementing a binary search

def findInSortedList(something , alist ):start = 0end = len(alist) – 1

status = Falsewhile start <= end:

checkpoint = int(( start+end )/2.0)if alist[checkpoint ]== something:

return Trueif alist[checkpoint]<something:

start=checkpoint +1if alist[checkpoint]>something:

end=checkpoint -1return status

Page 27: Announcements

print("Checking at: "+str(checkpoint )+"Start:"+str(start )+" End:"+str(end))>>> findInSortedList("giraffe" ,

["apple","bear","cat”,"dog"])Checking at: 1 Start :0 End:3Checking at: 2 Start :2 End:3Checking at: 3 Start :3 End:3False>>> findInSortedList("apple”

["apple","bear","cat”,"dog"])Checking at: 1 Start :0 End:3Checking at: 0 Start :0 End:0True>>> findInSortedList("dog" ,

["apple","bear","cat”,"dog"])Checking at: 1 Start :0 End:3Checking at: 2 Start :2 End:3Checking at: 3 Start :3 End:3True

Running the binary

search

Page 28: Announcements

Clicker QuestionDid you come to class today?

A) yes

B) no

Page 29: Announcements

HomeworkRead Chapter 9