A performance comparison of Clojure and Java
Clojure is a relatively new functional programming language that can compile to both Java bytecode and JavaScript (ClojureScript), with features like persistent data structures and a high level of abstraction. With new languages it is important to not only look at their features, but also evaluate h...
Main Author: | |
---|---|
Format: | Others |
Language: | English |
Published: |
KTH, Skolan för elektroteknik och datavetenskap (EECS)
2020
|
Subjects: | |
Online Access: | http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-272100 |
id |
ndltd-UPSALLA1-oai-DiVA.org-kth-272100 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-UPSALLA1-oai-DiVA.org-kth-2721002020-04-18T03:35:52ZA performance comparison of Clojure and JavaengEn prestandajämförelse för Clojure och JavaKrantz, GustavKTH, Skolan för elektroteknik och datavetenskap (EECS)2020Computer and Information SciencesData- och informationsvetenskapClojure is a relatively new functional programming language that can compile to both Java bytecode and JavaScript (ClojureScript), with features like persistent data structures and a high level of abstraction. With new languages it is important to not only look at their features, but also evaluate how well they perform in practice. Using methods proposed by Georges, Buytaert, and Eeckhout [1], this study attempts to give the reader an idea of what kind of performance a programmer can expect when they choose to program in Clojure. This is done by first comparing the steady-state runtime of Clojure with that of Java in several small example programs, and then comparing the startup time of Clojure with that of Java using the same example programs. It was found that Clojure ran several times slower than Java in all conducted experiments. The steady-state experiments showed that the slowdown factors ranged between 2.4826 and 28.8577. The startup slowdown factors observed ranged between 2.4872 and 52.0417. These results strongly suggest that the use of Clojure over Java comes with a cost of both startup and runtime performance. Clojure är ett relativt nytt funktionellt programmeringsspråk som kan kompilera till både Java bytecode och JavaScript(ClojureScript), med funktionalitet som persistenta datastrukturer och en hög abstraktionsnivå. Med nya språk är det viktigt att inte bara kolla på dess funktionalitet, utan också utvärdera hur dom presterar i praktiken. Genom att använda metoder som föreslogs av Georges, Buytaert och Eeckhout [1], så har den här studien försökt ge läsaren en uppfattning av vilken sorts prestanda man kan förvänta sig när man väljer att programmera i Clojure. Detta gjordes genom att först jämföra steady-state-prestandaskillnaden mellan Clojure och Java i ett flertal små exempelprogram, och sen jämföra starttiden mellan de två programmeringsspråken i samma exempelprogram. Man kom fram till att Clojure körde flera gånger segare än Java i alla genomförda experiment, för både steady-stateoch starttidsexperimenten. Steadystate-experimenten visade nedsegningsfaktorer mellan 2.4826 och 28.8577. Starttidsexperimenten visade nedsegningsfaktorer mellan 2.4872 och 52.0417. Dessa resultat pekar på att användning av Clojure kommer med en prestandakostnad för både starttid och körtid. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-272100TRITA-EECS-EX ; 2020:25application/pdfinfo:eu-repo/semantics/openAccess |
collection |
NDLTD |
language |
English |
format |
Others
|
sources |
NDLTD |
topic |
Computer and Information Sciences Data- och informationsvetenskap |
spellingShingle |
Computer and Information Sciences Data- och informationsvetenskap Krantz, Gustav A performance comparison of Clojure and Java |
description |
Clojure is a relatively new functional programming language that can compile to both Java bytecode and JavaScript (ClojureScript), with features like persistent data structures and a high level of abstraction. With new languages it is important to not only look at their features, but also evaluate how well they perform in practice. Using methods proposed by Georges, Buytaert, and Eeckhout [1], this study attempts to give the reader an idea of what kind of performance a programmer can expect when they choose to program in Clojure. This is done by first comparing the steady-state runtime of Clojure with that of Java in several small example programs, and then comparing the startup time of Clojure with that of Java using the same example programs. It was found that Clojure ran several times slower than Java in all conducted experiments. The steady-state experiments showed that the slowdown factors ranged between 2.4826 and 28.8577. The startup slowdown factors observed ranged between 2.4872 and 52.0417. These results strongly suggest that the use of Clojure over Java comes with a cost of both startup and runtime performance. === Clojure är ett relativt nytt funktionellt programmeringsspråk som kan kompilera till både Java bytecode och JavaScript(ClojureScript), med funktionalitet som persistenta datastrukturer och en hög abstraktionsnivå. Med nya språk är det viktigt att inte bara kolla på dess funktionalitet, utan också utvärdera hur dom presterar i praktiken. Genom att använda metoder som föreslogs av Georges, Buytaert och Eeckhout [1], så har den här studien försökt ge läsaren en uppfattning av vilken sorts prestanda man kan förvänta sig när man väljer att programmera i Clojure. Detta gjordes genom att först jämföra steady-state-prestandaskillnaden mellan Clojure och Java i ett flertal små exempelprogram, och sen jämföra starttiden mellan de två programmeringsspråken i samma exempelprogram. Man kom fram till att Clojure körde flera gånger segare än Java i alla genomförda experiment, för både steady-stateoch starttidsexperimenten. Steadystate-experimenten visade nedsegningsfaktorer mellan 2.4826 och 28.8577. Starttidsexperimenten visade nedsegningsfaktorer mellan 2.4872 och 52.0417. Dessa resultat pekar på att användning av Clojure kommer med en prestandakostnad för både starttid och körtid. |
author |
Krantz, Gustav |
author_facet |
Krantz, Gustav |
author_sort |
Krantz, Gustav |
title |
A performance comparison of Clojure and Java |
title_short |
A performance comparison of Clojure and Java |
title_full |
A performance comparison of Clojure and Java |
title_fullStr |
A performance comparison of Clojure and Java |
title_full_unstemmed |
A performance comparison of Clojure and Java |
title_sort |
performance comparison of clojure and java |
publisher |
KTH, Skolan för elektroteknik och datavetenskap (EECS) |
publishDate |
2020 |
url |
http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-272100 |
work_keys_str_mv |
AT krantzgustav aperformancecomparisonofclojureandjava AT krantzgustav enprestandajamforelseforclojureochjava AT krantzgustav performancecomparisonofclojureandjava |
_version_ |
1719313336030461952 |