Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

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

Lignende præsentationer


Præsentationer af emnet: "Type analyse i FunCalc / CoreCalc Baggrund og kontekst Formål Designovervejelser → løsning /arkitektur Strategi for implementering og afprøvning Resultater."— Præsentationens transcript:

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

2 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

3 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.

4

5 > 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

6 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

7 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.

8 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

9 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;

10 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)

11 Apply funktion (original) CIL FunctionValue SdfInfo Call Site Descriptor

12 Apply funktion (benchmark) CIL FunctionValue Call Site Descriptor SdfInfo

13 Apply funktion (typebestemt) CIL FunctionValue Call Site Descriptor SdfInfo

14 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 15.800 ns til 7.200 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.

15 Goalseek funktion (typebestemt) Call Site Descriptor CIL

16 ECMA 335, Partition I (method calls).

17 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.


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

Lignende præsentationer


Annoncer fra Google