Innehåll. EDAA35 Föreläsning 5. Kursinformation: tidigare laborationer som inte är godkända. Kursinformation: Presentation av lab 4

Relevanta dokument
OOP Objekt-orienterad programmering

Program & programmering

Introduktion till programmering och Python Grundkurs i programmering med Python

Idag. EDAA35, föreläsning 4. Analys. Kursmeddelanden. Vanliga steg i analysfasen av ett experiment. Exempel: exekveringstid

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

SMD 134 Objektorienterad programmering

Föreläsning 2. Operativsystem och programmering

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Idag. EDAA35: Utvärdering av programvarusystem. Mål. Innehåll. Kursmoment. Lärare

Föreläsning 1 & 2 INTRODUKTION

Idag. EDAA35, föreläsning 4. Analys. Exempel: exekveringstid. Vanliga steg i analysfasen av ett experiment

TDDC77 Objektorienterad Programmering

Grundkurs i programmering - intro

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Projektet. EDAA35 Föreläsning 7. Krav på uppgiften. Ert projektförslag. Inlämning av förslag. Egna idéer är välkomna!

Föreläsning 1: Intro till kursen och programmering

HF0010. Introduktionskurs i datateknik 1,5 hp

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Objektorienterad Programmering (TDDC77)

Datorarkitekturer med operativsystem ERIK LARSSON

Introduktion till programmering. Programspråk och paradigmer

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering i Java

Datorarkitekturer med operativsystem ERIK LARSSON

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Inledande programmering med C# (1DV402) Introduktion till C#

Föreläsning 1: Intro till kursen och programmering

Innehålls förteckning

Datorsystemteknik DAV A14 Föreläsning 1

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Att komma igång. Föreläsning 1

Föreläsning 1 & 2 INTRODUKTION

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

F4. programmeringsteknik och Matlab

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Datorsystemteknik DAV A14 Föreläsning 1

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 3. Programmering, C och programmeringsmiljö

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Kursinfo. Outline. Hemsida. Organization. Ahmed Rezine Examination. Webreg.

Kompilera och exekvera Javakod

Industriella styrsystem, TSIU06. Föreläsning 2

IT för personligt arbete F6

IT för personligt arbete F5

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2009

Tentamen den 18 mars svar Datorteknik, EIT070

En nivå upp jämfört med innan. EDAA35: Utvärdering av programvarusystem. Idag. Kursens mål. Innehåll. Kursmoment

Det finns många flaggor till g++,

Föreläsning 3. Programmering, C och programmeringsmiljö

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Föreläsning 22. Tobias Wrigstad. Under huven på JVM. Bytekod. JIT. Reflection. Profiling.

Programmeringsteknik med C och Matlab

En kort text om programmering i C.

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

TSEA28 Datorteknik Y (och U)

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Editering, Kompilering och Exekvering av Javaprogram

Imperativ programmering

Att komma igång. Föreläsning 1

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster

Minnet från processorns sida Datorteknik

Programmering för språkteknologer I, VT2012. Rum

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2010

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Pipelining i Intel 80486

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Introduktion till programmering

Instruktioner för att kunna programmera på skolans datorer

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum:

Programmering Introduktion

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk.

Datorteknik ERIK LARSSON

Transkript:

EDAA35 Föreläsning 5 Innehåll Kursinfo Exekveringsmiljö och lite om resten av datorn Varför tar ett program inte lika lång tid varje gång? Mätning av exekveringstid Lite om lab 5 Kursinformation: tidigare laborationer som inte är godkända Kursinformation: Presentation av lab 4 Det finns tid att bli godkänd (och att ställa frågor) på laborationen i denna veckan All extra information som behövs för att göra lab 3 själv finns på kursens hemsida Randomisering om du inte redan estimerat: Om du inte redan fått en blankett, välj alternativ A om du är född i en udda månad, annars alternativ B Görs individuellt på övningstid i vecka 10 Anmäl dig till en av fyra möjliga tider i SAM (se kursens hemsida) Kontrollera att du inte redan har tiden bokad, t ex av laboration i denna kursen Ta med dig dina fyra sidor utskrivna och var beredda att hålla presentationen för 4-5 andra personer 15 min inkl frågor (5 min) och feedback (ca 2-3 min) Kursinformation: Lab 5 Kursinformation: Projektet Förberedelseuppgifter Troligt att ni måste arbeta med labb-uppgifterna själva före eller efter labb-tiden Presentation: Individuell rapport som ska granskas och godkännas i kursen Inlämning av rapport i moodle Inlämning kommentarer i moodle (på tre rapporter) Alla får kommentarer från tre granskare Om mer än en granskare klagar på något så måste ni uppdatera för att bli godkända Inlämning av slutgiltig version (i SAM) Görs i nästa läsperiod Grupper om 3 personer Ni får gärna komma med egna idéer, men det finns förslag Individuellt teori-quiz i Moodle Gruppen presenterar på kurskonferens på övningstid i sista veckan Tidplan enligt kursprogram Mer information på föreläsning 7 1

Varför tar ett program inte lika lång tid varje gång? Beror på indata Flera saker händer samtidigt i datorn Programmet beter sig olika varje gång, t ex Optimering Garbage collection Hur körs ett vanligt program? > ls #include <stdioh> forelasningc > cc forelasningc > ls int main() { printf("hello, EDAA35 \n"); aout forelasningc } > /aout Hello, EDAA35 > Högnivåspråk C, C++, etc kompileras till Exekverbart program exekverar maskinoberoende kod maskinkod CPU forts Mer portabelt alternativt (interpretator) Fördelar: Slipper skriva assembler direkt Exekverar maskinkod, blir snabbt Problem : Maskinkoden anpassad för specifik datortyp, inte portabelt Högnivå-språk tolkar Interpretator exekverar CPU Exempel (R): >source( calculater ) Fördel: - Portabelt Nackdel: - Långsamt 2

Bättre interpreterande alternativ forts Högnivåspråk Java, etc kompileras till Bytekod tolkar Fördelar Portabelt, den kompilerade bytekoden kan flyttas mellan olika datorer Problem Blir förhållandevis långsamt (men bättre än förra alternativet) Interpretator exekverar T ex >javac Labjava >java -cp <classpath> Lab CPU Exempel Alt 3: både snabbt och portabelt Vanliga C, C++, Pascal, Cobol, Fortran Interpreterande Java (såhär fungerade det i början) Högnivåspråk Java, etc kompileras till Bytekod JIT-kompileras till maskinoberoende kod maskinkod maskinoberoende kod maskinkod tolkar Interpretator Exekverbart program exekverar CPU Just-in-time kompilering (JIT) Optimering Används i t ex Java idag Små delar av bytekoden kompileras efterhand Avvägning Ju mer som kompileras desto snabbare exekvering Ju mer som kompileras desto längre kompileringstid Fördelar: Blir både portabelt och snabbt Ger även möjlighet att optimera koden Anpassa den kompilerade koden efter programmet T ex byta ut loopar mot konsekutiva satser All information finns dock inte i början och det tar tid att optimera Programmet optimeras efter hand» à Programmet blir snabbare och snabbare Om man vill så kan man stänga av JIT-kompilatorn java -Xint fil 3

Snabbare och snabbare Riktigt exempel exekveringstid insvängningsförlopp jämviktsläge exekvering Exectimens 0 500000 1000000 1500000 2000000 2500000 0 100 200 300 400 500 600 Measure Andra anledningar till att det tar olika lång tid varje gång Olika indata, olika förutsättningar à olika tid Andra saker händer i datorn à försök stänga av så mycket som möjligt när ni mäter Programmet kan innehålla flera parallella trådar Garbage collection Prestanda och mätning av exekveringstid Prestanda System ett sätt att se på det Exekveringstid Minne som krävs Energi som går åt ISO9126: Efficiency: The capability of the software product to provide appropriate performance, relative to the amount of resources used, under stated conditions Time behaviour: The capability of the software product to provide appropriate response and processing times and throughput rates when performing its function, under stated conditions Del av program Program Datorsystem Nätverk System av system Prestanda kan diskuteras redan i specifikationsfasen 4

exempel Utveckling av programvara ett sätt att se på det Enkel modell: T = 1/(μ λ) (se EITF95 kösystem) (Wikipedia V-model public domain) Utveckling av programvara (2) Egenskaper hos prestandamått Mer eller mindre iterativt Steg efter steg Inkrementellt Iterativt idé sätt mål utveckling validering V 1 V 2 V n Linjäritet Tillförlitlighet Lätt att mäta Konsistens Oberoende (Lilja, 2000) Klockfrekvens MIPS (Million Instructions Per Second) hur många klockcykler som processorns inbyggda klocka gör per sekund, t ex 1,6 GHz relaterat till hur många instruktioner som utförs per tidsenhet, men tar inte hänsyn till hur många klockcykler som krävs för varje instruktion enkelt att redogöra för för olika datorsystem hur många instruktioner en processor i ett datorsystem exekverar per sekund Jmf med klockfrekvens bättre eftersom det tar hänsyn till att varje instruktion kräver olika många klockcykler Dock så genererar instruktioner olika mycket värde i olika processorer många andra saker påverkar upplevelsen av att använda en dator, t ex lagringsenhetens snabbhet, minnets snabbhet 10% snabbare klockfrekvens behöver inte upplevas som just 10% snabbare i olika datorer 5

MFLOPS (Millions of floating-point instructions per second) Testuppsättningar, t ex SPEC Istället för att fokusera på instruktioner, fokuserar på flyttalsoperationer Flyttal: reellt tal med begränsat antal siffror, t ex float Mer rättvist mått än MIPS eftersom flyttalsoperationer är mer lika mellan olika datorer Alla applikationer handlar dock inte om att räkna med flyttal SPECjvm2008: för Java exekveringsmiljöer kompilering av java-filer komprimering av data kryptering och dekryptering av data användning av en java-databas för affärssystem mp3-avkodning numeriska metoder, baserat på SciMark 20 serialisering och av-serialisering av Java-objekt grafisk visualisering XML-hantering Exekveringstid för programdel Ofta intressant att mäta hur lång tid en del av ett program tar, t ex i Java: long starttime = SystemnanoTime(); // measured code long endtime = SystemnanoTime(); long measuredtime = endtime - starttime; Skulle också kunna använda currenttimemillis() Klocktid Vad vill vi mäta - tiden vid uppstart eller vid jämviktsläget? Tiden vid uppstart exekveringstid Starta programmet p gånger och mät tiden för programdelen en gång per uppstart Data: x 1, x 2, x p Beräkna medelvärdet x = 1 px x i p i=1 och räkna ut konfidensintervallet exekvering insvängningsförlopp jämviktsläge 6

Tid vid jämviktsläget Forts Två uppstarter: exekveringstid exekvering Uppstarterna kan bete sig olika Jämviktslägena behöver inte starta på samma läge 1 Studera p olika uppstarter av exekveringsmiljön, där man vid uppstart i gör s i mätningar av samma sak x ij är resultatet av mätning j vid uppstart i 2 För varje uppstart bestäm var tröskeln, r i, mellan insvängningen och jämvikten är Man vill använda s i - r i = k mätningar 3 Bestäm medelvärdet av varje uppstart x i = 1 k Xsi j=si k+1 x ij 1 Bestäm medelvärdet av medelvärdena och konfidensintervallet x = 1 p px x i i=1 Indata Exekveringstiden påverkas av vilken indata man har Definiera vilka indata som används i varje studie T ex för sortering Hur många datapunkter som ska sorteras? Hur sorterade / blandade de är från början? R microbenchmark Experiment unsorted <- order(runif(100)) > microbenchmark(insertionsort(unsorted), sort(unsorted)) Unit: microseconds expr min lq mean median uq max neval insertionsort(unsorted) 1510668 18237300 195816018 1853934 19433295 6391995 100 sort(unsorted) 19735 245295 3003572 27115 321005 86174 100 > Den uppmätta tiden påverkas alltså av andra saker i datorn men om det är en jämförande studie så kan det gå bra om alla saker som jämförs påverkas lika mycket Oberoende variabler Experiment Beroende variabler 7

Lab 5 Lab 5: labbuppställning Sorteringsmetod Typ av indata JIT eller inte Experiment Sorteringstid R-program som startar Java-program p gånger, samt analyserar resultat k, infil, utfil, val av metod utfil Java-program som exekverar undersökt programdel k gånger (och mäter tiden) infil Argument till Java-program > java ArgumentReader Antal argument: 0 > java ArgumentReader Hej 2018 Antal argument: 2 Hej 2018 8