What about the performance of frameworks?
Posted: Sat Jan 25, 2025 4:29 am
Compilation and interpretation of source code into binary code: For example, the results of the paper do not include the energy required to compile Java code or to compile TypeScript into JavaScript before execution. These additional steps are not necessary in all cases, but must be taken into account for a fair comparison.
Portability: If an application in C has to be adapted in order to run on another system, this conversion costs resources, for example on developers' computers and in deployment pipelines.
Debugging: Using Flask debug mode to test changes at runtime requires less time and resources than compiling an entire Rust project with all crates before the bug fix can be checked. In addition, maintainability and readability influence how many resources have to be invested in adapting code. Debugging in different languages can therefore also cost different indonesia consumer email list amounts of working time and therefore resources and energy.
A pure orientation on the table is therefore misleading; rather, developers must always orient themselves on the entire life cycle and the use case of the software to be developed.
The second comparison that is often cited is the Web Framework Benchmarks . They include tasks such as JSON serialization, database access and server-side template creation and compare performance, latency and overhead - but not energy efficiency. More realistic and everyday comparisons are made and different combinations of tasks are tested. Compared to testing individual languages, the results when comparing frameworks look very different. In the Fortune test scenario, for example, the NodeJS (JavaScript) framework performs better than Spring (Java). The situation is similar with Django (Python) and Rails (Ruby). Of course, Node and Spring are not easily substitutable, but the comparison shows that for certain settings, "less efficient languages" can also be a good choice.
This comparison also leaves some of the questions addressed above unanswered. Every productive system has different runtime requirements and uses the functionality of the frameworks more, less, or not at all. Again, the entire development cycle is not considered here. A decision for or against technologies based solely on energy efficiency benchmarks at runtime is too short-sighted. Otherwise, it would also have to be discussed whether object-oriented programming should be avoided in favor of sustainability and monoliths with tight coupling should be developed instead. Research shows that procedurally programmed monoliths (difficult to maintain, scalable, etc.) generate less overhead at runtime than object-oriented modular systems. The discussion can also be extended to open source and low or no code, but that would go too far here.
Portability: If an application in C has to be adapted in order to run on another system, this conversion costs resources, for example on developers' computers and in deployment pipelines.
Debugging: Using Flask debug mode to test changes at runtime requires less time and resources than compiling an entire Rust project with all crates before the bug fix can be checked. In addition, maintainability and readability influence how many resources have to be invested in adapting code. Debugging in different languages can therefore also cost different indonesia consumer email list amounts of working time and therefore resources and energy.
A pure orientation on the table is therefore misleading; rather, developers must always orient themselves on the entire life cycle and the use case of the software to be developed.
The second comparison that is often cited is the Web Framework Benchmarks . They include tasks such as JSON serialization, database access and server-side template creation and compare performance, latency and overhead - but not energy efficiency. More realistic and everyday comparisons are made and different combinations of tasks are tested. Compared to testing individual languages, the results when comparing frameworks look very different. In the Fortune test scenario, for example, the NodeJS (JavaScript) framework performs better than Spring (Java). The situation is similar with Django (Python) and Rails (Ruby). Of course, Node and Spring are not easily substitutable, but the comparison shows that for certain settings, "less efficient languages" can also be a good choice.
This comparison also leaves some of the questions addressed above unanswered. Every productive system has different runtime requirements and uses the functionality of the frameworks more, less, or not at all. Again, the entire development cycle is not considered here. A decision for or against technologies based solely on energy efficiency benchmarks at runtime is too short-sighted. Otherwise, it would also have to be discussed whether object-oriented programming should be avoided in favor of sustainability and monoliths with tight coupling should be developed instead. Research shows that procedurally programmed monoliths (difficult to maintain, scalable, etc.) generate less overhead at runtime than object-oriented modular systems. The discussion can also be extended to open source and low or no code, but that would go too far here.