14-440-127 Lecture 14 Notes

14-440-127 Lecture 14 Notes - 14:440:127 Introduction to...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 14:440:127 Introduction to Computers for Engineers Notes for Lecture 14- Special Topics Rutgers University, Fall 2008 Instructor- Blase E. Ur 1 Efficiency ECE Task 5 on Project 2 was pretty interesting in that it made you really think about efficiency (and some students came up with excellent solutions, better than what I had). You had about a 100,000 element vector of hostnames, and a 100,000 element vector of filesizes. These vectors corresponded, and each element represented a request to our web server. Some students initially wanted to use unique, take their vector of unique IPs, and use that to loop through the 100,000 element vector, saying if ipx matched the current unique value, add it on to the total. The problem? Well, you have about 6,000 unique IPs, and 100,000 element vector, which means youre going to have something like 600,000,000 comparisons. That takes a while. I proposed looping through the 100,000 element vector once (and adding values to a struct, where the field names were the hostnames), and then a 6,000 element vector once. So I made 106,000 comparisons, which is why my code ran in under 30 seconds on a disaster of a laptop. Heres my code: % takes about 28 seconds to run s=struct( ); for x=1:length(fsize) curr = [a regexprep(ip{x},[\-\.\\\/],)]; if(length(curr)>60) curr=curr(1:60); end if(isfield(s,curr)) eval([s. curr =s. curr + num2str(fsize(x)) ;]) else eval([s. curr = num2str(fsize(x)) ;]) end end maxval=-1; maxip = { }; n = fieldnames(s); for x=1:length(n) if(getfield(s,n{x})>maxval) maxval=getfield(s,n{x}); maxip(length(maxip)+1) = ip(x); end end for x=1:length(maxip) fprintf(The computer at %s downloaded the most, %.0f bytes\n,maxip{x},maxval) end Here are some of the fantastic solutions students came up with (and posted on the discussion board, or showed me). They took advantage of Matlabs built-in functions in lots of interesting ways. Recall that built-in functions are much more optimized than loops. The solutions tend to use some functions (like accumarray, or specific options of sort) that are very specific to Matlab, and which we havent covered in class: % posted by Thomas Merichko, takes about 16 seconds [b1, m1, n1] = unique(ip); oldtotal=0; A=max(n1); for x=1:A B=find(n1==x); C=sum(fsize(B)); if C>oldtotal newtotal=C; oldtotal=C; topdl=b1(x); end end topdl=char(topdl); fprintf(The computer at %s downloaded the most, %0.f bytes \n, topdl, newtotal) % posted by Cody Schafer, takes about 1 second [u_ip i j]= unique(ip); u_fsize=accumarray(j,fsize); [amt index] = max(u_fsize); index = find(u_fsize==amt); amt = u_fsize(index); fprintf(The computer at %s downloaded the most, %.0d bytes\n,u_ip{index},amt); % posted by Komail Ali, takes about half a second [r e]=sort(ip); minval=-inf; x=1:size(d)-1; index=strcmp(r(x),r(x+1)); abc=find(index==0); for x=1:size(abc) if(x==1) bf=sum(fsize(e(1:abc(x)))); else bf=sum(fsize(e((abc(x-1)+1):(abc(x)))));...
View Full Document

This note was uploaded on 11/09/2011 for the course ENGINEERIN 127 taught by Professor Finch during the Fall '08 term at Rutgers.

Page1 / 8

14-440-127 Lecture 14 Notes - 14:440:127 Introduction to...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online