A Cross-Language Energy Benchmark Using CPU-, Memory-, and I/O-Bound Workloads in Data Processing Pipelines

The increasing reliance on software-driven systems contributes to rising energy demand, placing pressure on energy grids and computing infrastructure. Previous studies have estimated that information and communication technology could account for up to 14% of global greenhouse gas emissions by 2040 if current trends continue, highlighting the importance of improving the energy efficiency of software systems.
Existing studies on programming language energy efficiency often rely on small synthetic benchmarks or isolated algorithmic tasks. Such benchmarks are useful for controlled comparison, but may not fully capture how applications behave when CPUoriented, memory-oriented, and I/O-oriented stages are combined. This limits how directly their conclusions can be applied to realistic data-processing workloads.
This thesis addresses this gap by designing and evaluating a reproducible benchmark suite for C, Go, Julia, and Python. The benchmark suite is based on recurring stages in ETL-inspired data-processing pipelines: JSON parsing, byte-buffer processing, sequential file output, and composed pipeline execution. The workloads are evaluated in isolation and as composed end-to-end pipelines using runtime, CPU package energy, DRAM energy, and peak resident set size as metrics.
The results show that no single language is best for all workloads and metrics. C achieves the lowest runtime and CPU package energy in most workload configurations, while Go remains within a small margin of C across workloads. Python frequently achieves low peak memory usage, but incurs high runtime and energy costs in workloads where large byte-wise loops execute at interpreter level rather than through native library code. Julia carries a larger fixed runtime and memory overhead in simple workloads due to JIT compilation startup costs, but matches or outperforms other languages in workloads where LLVM generates vectorized native code for bytebuffer operations. The results also show that library choice and implementation details can substantially affect measured behavior, as seen in the JSON parser variants and the SHA-256/XOR vectorization behavior. Overall, this thesis shows that realistic energy benchmarking should compare representative implementations of workload classes rather than treating programming languages as universally more or less energy efficient. The results demonstrate that efficiency depends on the specific workload and implementation, meaning that no single language consistently performs best across all scenarios.
Keywords: Software benchmarking, programming language execution models, resource utilization, runtime environments, data processing pipelines, the relationship between execution time and energy consumption, and optimization techniques.