Prestandaanalys av JavaScript

January 9, 2018 | Author: Anonymous | Category: Engineering & Technology, Datavetenskap, Java Programming
Share Embed Donate


Short Description

Download Prestandaanalys av JavaScript...

Description

Examensarbete utfört av Fredrik Smedberg

Presentationens upplägg • Vad är JavaScript? • Varför är språket viktigt? • Historisk utveckling

• Min frågeställning • Avgränsningar • Metod • Resultat • Slutsats • Frågor? 2 av 22

Vad är JavaScript? – Språkets födelse • Netscape anställde Brendan Eich, 1995 • Mocha -> LiveScript -> JavaScript • Microsoft JScript, Internet Explorer 3

• ECMAScript • AJAX o Gmail o Hitta.se

3 av 22

Vad är JavaScript? – Design • Multi-paradigm o Prototype-baserat (avsaknad av klasser) o Imperativt

o Funktionellt o Scriptspråk • Dynamiskt • Likheter med o C (syntaxen) o Self och Scheme (designprinciper) o Men även Java, Perl och Python

4 av 22

Vad är JavaScript? – Design • Körs i virtuell maskin • Utseende

/* Finds the lowest common multiple of two numbers */ function LCMCalculator(x, y) { // constructor function function checkInt(x) { // inner function // exception throwing }

if (x % 1 != 0) throw new TypeError(x + " is not an integer"); return x;

// semicolons are optional (but beware since this may cause // consecutive lines to be erroneously treated as a single // statement) }

this.a = checkInt(x) this.b = checkInt(y)

5 av 22

Varför är språket viktigt? • Ökad användning • Internet har spridit sig

6 av 22

Varför är språket viktigt? • Adobes Flash

(ej standard)

• Suns (Oracles) Java

(halvstandard)

• Microsofts Silverlight

(ej standard)

• HTML5

(blivande standard)

7 av 22

Historisk utveckling

8 av 22

Min frågeställning • Har prestandan påverkats? • Har koden blivit lättare att förstå? o Rader kod

o Återanvändbarhet o Minnesläckor • Vilka utvecklingsverktyg finns och hur påverkas de utvecklingen? • Var och när är det motiverat att använda JavaScript? • Hur ofta används den kod jag skrivit om?

9 av 22

Avgränsningar • Vad tittade jag på? o Hur prestandan påverkas o Mängd kod och hur den påverkar läsbarheten

o Minnesläckor o Portabilitet och återanvändbarhet o Översiktlig genomgång av utvecklingsverktyg o Hur ofta skriven kod används • Endast C++ och JavaScript jämfördes • Exempel på vad jag inte tittade på 10 av 22

Metod • Litteratur och akademiska papper • Identifierade lämpliga uppgifter att implementera o GIF-dekoder

o XML-parser o Elementära tester • JPEG-encoder • Industriella benchmarks

11 av 22

Metod – GIF-dekoder • Vad är en GIF-dekoder? • En C++-version, fyra versioner skrivna i JavaScript • Svårigheten med att implementera en GIF-dekoder i JavaScript

• Varför GIF-dekoder?

12 av 22

Metod – GIF-dekoder • Dekoderns olika steg

Rå data

Header

Färgtabell

LZWblock

13 av 22

Metod – XML-parser • Dekoda en slags XML • C++-dekoder • JavaScript-dekoder baserad på C++-versionen

• Skrev ny JavaScript-dekoder baserad på regular expressions • Varför XML-parser?

14 av 22

Metod – Elementära tester • Varför elementära tester? • Exempel o Hashalgoritmer

o Sortering o Matrisberäkningar o Funktionsanrop o Nästlade loopar o Strängkonkatenering

15 av 22

Resultat – GIF-dekoder

16 av 22

Resultat – Minnesanvändning

17 av 22

Resultat – XML-parser

18 av 22

Resultat – JPEG-encoder

19 av 22

Resultat – Annat • Rader kod? • Responsivitet? • Industriella benchmarks?

• Internet Explorer?

20 av 22

Slutsats • JavaScript är snabbt! • Det går skapa de flesta program med fullgod prestanda

• En stor nackdel är minnesförbrukningen • En kod kan köras på många platformar • Kräver mindre rader kod • Internet Explorer är en stor flaskhals • Utvecklingsverktyg?

21 av 22

Frågor?

22 av 22

View more...

Comments

Copyright � 2017 NANOPDF Inc.
SUPPORT NANOPDF