Type analyse i FunCalc / CoreCalc Baggrund og kontekst Formål Designovervejelser → løsning /arkitektur Strategi for implementering og afprøvning Resultater.

Slides:



Advertisements
Lignende præsentationer
Arkitektur - data.
Advertisements

Agenda  Opnåede resultater  Logging af backendkald  Analyse af logs  Implementering af caching  Demo af prototype  Videre arbejde i praksis  Logging.
07 – Kort om OO Introduktion.
1 Intro nedarvning (eng.: inheritance) Nedarvningshierarkier Intro polymorfisme (eng.: polymorphism) Abstract / virtual / override / sealed Intro interfaces.
Objektorienteret programmering
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
Masterpages/Otto Knudsen 1 Master Pages Master Pages i ASP.NET 2.0.
Eksekvering/Otto Knudsen 1 Udrulning Publicering af en web-applikation.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Datastrukturer og Collections Rasmus D. Lehrmann DM
Intro Bemærkninger? Præsentation af litteratur: PHP and MySQL Web Development (SAMS) PHP Pocket Reference (O’Reilly) Dictionary of Networking (Sybex)
Multi-vejs hobe med ekstra bytes Foredrag: Claus Jensen Projektmedlemmer: Jyrki Katajainen, Fabio Vitale, Claus Jensen.
Emergency call button Stabilt og simpelt. I dag Problemer? Højtaler/mikrofon er ikke i samme rum som personen der har brug for hjælp Systemet kræver.
28. maj 2008 Styrelsen for Statens Uddannelsesstøtte 1 Danmarks strategi for digitalisering Forbedre servicen til borgere og virksomheder (Bedre digital.
1 Unified Expression Language Copyright © Lund & Bendsen A/S Unified Expression Language.
Anvendelser I Leg og spil.
SMED Formål: Minimering af omstillingstiden 1 Hvad er SMED 2 Gevinster
Buttom-up parsning: Hvor er vi Mellem- kode Kald til Runtimesys. Mellemk.- optimering Kode- generering Kode- optimering Leksikalsk- analyse Syntax- analyse.
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Eksempel på realisering af domænemodel
Design, verifikation og analyse
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Ingeniørhøjskolen i Århus Slide 1 Newton approximation ”Oversæt” til algoritme - Step 5: Skriv kode - Step 4: Skriv pseudokode - Step 3: Specificér pre-
Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
Paradigmer i Programmering 1. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
Fundamentale sprogbegreber
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Quiz 3.1. Quiz 1 – Assignment dIntProg, E14 Hvad er værdierne af x og y efter udførelse af følgende program? 1.x er 6, y er 3 2.x er 8, y er 5 3.x er.
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Økonometri 1: Heteroskedasticitet1 Økonometri 1 Heteroskedasticitet 27. marts 2003.
Design af brugerflader13.1 Kursusgang 13 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
DIEB8.1 Kursusgang 8 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
SAS Code analyzer Barbara Biørn olsen.
Modenhedsniveauer for en maturity model på ankervirksomheder De 5 modenhedsniveauer Ad hoc-niveau Ad hoc-niveauet er karakteriseret ved, at indkøbsområdet:
KAPITEL 7 Kreditrisiko.
KAPITEL 3 Volatilitet, Beta og Tracking Error
Ventilation og indeklima
KAPITEL 10 Derivater.
KAPITEL 5 Delta Normal Value at Risk
dagsorden Metoder i samfundsfag – hvorfor?
Gode råd om ansøgning til MUDP 2017
Forældre-information
Statisk ubestemte konstruktioner. Robusthed
Trigonometri som værktøj for problemløsninger ved geometri og måling
Pengurusan Pembayaran Penyelidikan Research Management Centre
Hvilke sager ligger der på vejlederkonsulentens bord for tiden?
C4 C4 i Hillerød Erhverv Handel Turisme, kultur, sport Uddannelse
Amukurs.dk Power point 1: Online præsentation af amukurs.dk - Sådan gør du: Læs ”Værd at vide, når du skal give en online præsentation af amukurs.dk”
Mit liv - nu med DAT MIT LIV - nu med DAT.
Et liv med OCD Nicoline Møller.
Interaktion og usability
KAPITEL 13 Kapitalkrav.
SUF - gevinstrealisering
Heteroskedasticitet 25. oktober 2005
Naturvidenskabelig metode
Programmering.
Præsentationens transcript:

Type analyse i FunCalc / CoreCalc Baggrund og kontekst Formål Designovervejelser → løsning /arkitektur Strategi for implementering og afprøvning Resultater Anvendelighed og perspektiv

Baggrund og Kontekst CoreCalc (regnearks-funktionalitet) FunCalc (funktioner defineret i regneark) Simpel intuitiv brugerflade Do. beregningsmodel Anvendelse fra enkle oversigter til komplekse simuleringer og analyser. Regnearks-definerede funktioner kompileres på køretid. Ukendt input type => boxing / unboxing

Formål Hypotese: Bedre kendskab til typer for udtryk i formler => boxing / unboxing kan minimeres. Gennemfør typeanalyse: Regneark er dynamisk typede som fx Scheme, og modsat fx Standard ML og Haskell som er statisk typede. Implementer typeanalyse, baseret på unification og substitution. Udfør målinger baseret på nyt typesystem.

> IEquatable Typ Equals Adjust Subst Union TypePrimitive - NumberPrimitive - TextPrimitive - Error FunCalc Types TypeArrayPrimitive -Typ elemType TypefunctionPrimitive - Signature TypeUnion - typs (List) Signature - resType - argTypes[] NumberText TypeArray - Array TypeFunction - Function Value

Designovervejelser Forsøg at udnytte det bedste fra både den statiske og dynamiske typeanalyse Afvis ikke input, hvis det giver mening at fortsætte. Håndtering af type(r) ved non-strict funktion. CLR: Håndtering af Value type vs. Reference type. Sameksistens med eksisterende kode. Typenotation for indbyggede funktioner. Soft types, wrapper/worker transformation

Løsning / Arkitektur Typenotation indbyggede typer: (NN)N svarende til N * N → N. Unify (Required Type) Soft types, wrapper/worker transformation Compile: Ansvaret for at aflevere en værdi af brugbar type, uddelegeres til de enkelte udtryk baseret på resultatet af type analysen.

Type AnalyseCompile ErrorErrorValue.type Number NumberPrimitive NumberValue.type Text TextPrimitive TextValue.type Function (signature) FunctionValue.type Array (element type)ArrayValue.type Union Value.type Mapning til CIL kodegenerering

Strategi for implementering Type analysen implementeres i fuldt omfang og erstatter det eksisterende type system. Compile til CLR indført gradvist i eksisterende arkitektur, styret af simpel boolean: if (this.name.Equals("INTEGRATE") || this.name.Equals("RECIP") || this.name.Equals("TRIAREA") || this.name.Equals("NONSTRICT") || this.name.Equals("XCOSX") || this.name.Equals("BULLETPV") || this.name.Equals("FINDEND") || this.name.Equals("GOALSEEK") ) newCG = true; else newCG = false;

Resultater En generel køretids forbedring på godt 20%. Forbedring på op til 65% i funktion med hyppig rekursion og kald af andre regnearks-funktioner. Forenklet kode. Anvist mulighed for anden anvendelse (dokumentation, support ved dannelse af funktion, kontrol af gyldig anvendelse) Kan danne basis for optimeret memory udnyttelse. Yderligere køretidsforbedring opnået på apply funktion (næste slide)

Apply funktion (original) CIL FunctionValue SdfInfo Call Site Descriptor

Apply funktion (benchmark) CIL FunctionValue Call Site Descriptor SdfInfo

Apply funktion (typebestemt) CIL FunctionValue Call Site Descriptor SdfInfo

Optimering af Apply funktion Løsning: Via typeanalyse infereres signatur som værende: Number → Number, denne fikseres i CIL kode, og funktion loades fra delegater: LoadDelegate Call (korrekt signatur) Er afprøvet (3% yderligere tidsgevinst på INTEGRATE) Afprøvet på goalseek funktion, resultat: 5 gennemløb af goalseek for xcosx funktion forbedret fra ns til ns, dvs. en forbedring på 54%. Problematik: Funktion ikke kendt på compilerings tidspunkt, men signatur kræves hard-coded i CIL kode. Næste trin: goalseek for partial applied function, hvis fx bulletpv specialiseres med fast nominel rente og antal terminer.

Goalseek funktion (typebestemt) Call Site Descriptor CIL

ECMA 335, Partition I (method calls).

Anvendelighed og perspektiv Store tidsgevinster påvist. Gennemfør implementering af typer i kompilering af funktioner. Forsøg med andre anvendelser (memory allokering, bruger support under indtastning, dokumentation). Tættere sammenhæng mellem CLR typer og FunCalc typer. Forsøg med polymorfe typer.