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

Full description

Bibliographic Details
Main Author: Krantz, Gustav
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