
Linköping University | Department of Computer and Information Science Master’s thesis, 30 ECTS | Datateknik 2021 | LIU-IDA/LITH-EX-A--2021/023--SE Holistic view on alternative pro- gramming languages for Radio Access Network applications in cloud and embedded deploy- ments En helhetsvy över alternativa programmeringsspråk för Radio Access Network-applikationer i moln- och inbyggda system Anton Orö Rasmus Karlbäck Supervisor : John Tinnerholm Examiner : Christoph Kessler Linköpings universitet SE–581 83 Linköping +46 13 28 10 00 , www.liu.se Upphovsrätt Detta dokument hålls tillgängligt på Internet - eller dess framtida ersättare - under 25 år från publicer- ingsdatum under förutsättning att inga extraordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka ko- pior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervis- ning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säker- heten och tillgängligheten finns lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsman- nens litterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida http://www.ep.liu.se/. Copyright The publishers will keep this document online on the Internet - or its possible replacement - for a period of 25 years starting from the date of publication barring exceptional circumstances. The online availability of the document implies permanent permission for anyone to read, to down- load, or to print out single copies for his/hers own use and to use it unchanged for non-commercial research and educational purpose. Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional upon the consent of the copyright owner. The publisher has taken technical and administrative measures to assure authenticity, security and accessibility. According to intellectual property law the author has the right to be mentioned when his/her work is accessed as described above and to be protected against infringement. For additional information about the Linköping University Electronic Press and its procedures for publication and for assurance of document integrity, please refer to its www home page: http://www.ep.liu.se/. Anton Orö © Rasmus Karlbäck Abstract With the emergence of cloud based solutions, companies such as Ericsson AB have started investigating different means of modernizing current implementations of software systems. With many new programming languages emerging such as Rust and Go, inves- tigating the suitability of these languages compared to C++ can be seen as a part of this modernization process. There are many important aspects to consider when investigating the suitability of new programming languages, and this thesis makes an attempt at con- sidering most of them. Therefore both performance which is a common metric as well as development efficiency which is a less common metric, were combined to provide a holistic view. Performance was defined as CPU usage, maximum memory usage, processing time per sequence and latency at runtime, which was measured on both x86 and ARM based hardware. Development efficiency was defined as the combination of the productivity metric, the maintainability index metric and the cognitive complexity metric. Combining these two metrics resulted in two general guidelines: if the application is constantly under change and performance is not critical, Go should be the language of choice. If instead performance is critical C++ should be the language of choice. Overall, when choosing a suitable programming language, one needs to weigh development efficiency against per- formance to make a decision. Acknowledgments We would like to thank our excellent supervisor at LiU, John Tinnerholm, who helped pro- vide us with valuable insights and feedback throughout the thesis. We also want to thank the supervisors at Ericsson who provided invaluable help when identifying the characteristics and continually helped moving the work forward. Further, we extend our gratitude to the respondents of our survey and without your help the results would have been incomplete. iv Contents Abstract iii Acknowledgments iv Contents v List of Figures viii List of Tables x Acronyms 1 1 Introduction 2 1.1 Motivation . 2 1.2 Aim............................................ 3 1.3 Research questions . 3 1.4 Delimitations . 4 1.5 Overview . 4 2 Theory 6 2.1 Radio access network . 6 2.2 Threads, concurrency and parallelism . 7 2.3 Green threads . 7 2.4 Inter-process communication . 8 2.5 The programming language C++ . 9 2.5.1 Concurrency . 9 2.5.2 Compiler . 9 2.5.3 Memory management . 10 2.6 Go............................................. 10 2.6.1 Concurrency . 10 2.6.2 Compiler . 11 2.6.3 Memory management . 11 2.6.4 Goroutines . 11 2.6.5 Go Runtime system . 12 2.7 Rust . 12 2.7.1 Concurrency . 13 2.7.2 Compiler . 13 2.7.3 Memory management . 14 2.8 Related work . 14 2.8.1 Measuring performance differences for programming languages . 14 2.8.2 Evaluating development efficiency differences for programming lan- guages . 15 2.8.3 Comparing compilers . 15 v 2.8.4 Advantages and disadvantages of C-RAN . 16 2.8.5 Energy consumption evaluation of programming languages . 16 2.9 Soft metrics . 17 2.9.1 Productivity . 17 2.9.2 Maintainability . 17 2.9.3 Understandability . 18 3 Background 20 3.1 Ericsson . 20 3.2 System requirements . 20 3.3 System description . 21 3.3.1 Test driver . 21 3.3.2 Application . 22 4 Method 25 4.1 Pre study . 25 4.1.1 Identifying the characteristics . 25 4.1.2 Hardware . 28 4.1.3 Choosing compiler . 29 4.2 Implementation . 29 4.2.1 Detailed description of the test driver . 30 4.2.2 Detailed description of the IPC . 30 4.2.3 Detailed description of the simplified application . 30 4.3 Performance comparison . 31 4.3.1 Sequence test . 32 4.3.2 Latency test . 33 4.3.3 Encode/decode test . 34 4.4 Development efficiency . 34 5 Results 36 5.1 Performance comparison . 36 5.1.1 Sequence test . 36 5.1.2 Latency test . 60 5.1.3 Encode/decode test . 62 5.2 Development efficiency . 65 5.2.1 Productivity . 65 5.2.2 Maintainability . 66 5.2.3 Understandability . 67 6 Discussion 68 6.1 Results . 68 6.1.1 Performance comparison . 68 6.1.2 Development efficiency . 71 6.2 Method . 72 6.2.1 Replicability . 72 6.2.2 Reliability . 72 6.2.3 Validity . 72 6.2.4 Pre study . 73 6.2.5 Implementation . 74 6.2.6 Performance comparison . 75 6.2.7 Development efficiency . 76 6.2.8 Understandability . 78 6.2.9 Literature . 78 vi 6.3 The authors’ experiences . 79 6.4 The work in a wider context . 80 7 Conclusion and future work 81 7.1 Conclusion . 81 7.2 Future work . 82 Bibliography 83 A Appendix 88 A.1 Time estimation survey . 88 A.2 Time estimation survey results . 94 A.3 Source code . 96 A.3.1 C++ application source code . 96 A.3.2 Go.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages143 Page
-
File Size-