As we take a step back over time, one can see how technology has changed over the past couple of decades. Remember shrink-wrapped software first sold on tapes and then CD/DVDs. Now we are in the age of cloud software, where you don’t need to update the software as each release is produced. Now, the software simply upgrades itself. CDs have been replaced with massive data centers where software is crunching numbers non-stop 24/7. And innovations in software aren’t going to stop here. As we enter into the next decade of 2020, we need to be ever cognizant of how we are designing and architecting our software platforms–not only to improve performance and operations, but software also plays a critical role in redefining our future energy consumption.
When we at Uplight think of efficiency, we often refer to energy efficiency initiatives that we work with our utility clients on. But we also consider how efficient our software is. Efficiency in software should be considered at all levels: from development cycles to designing reusable components to ensuring code is performant. Efficiency should also be woven into the DNA fabric of every software developer. You need not be an architect to think about how the software you create affects the world around you. Software is all about efficiency.
Do you ever think about how “where your code runs” can be more or less efficient? Is the code you wrote executing once for thousands of user requests, or are thousands of user requests executing the code you wrote all independently? There isn’t a one size fits all approach, with pros and cons to each. We tend to always think of performance when it comes to efficiency, usually due to the bottom line in operation costs, but we often fail to account for the total amount of energy consumption which includes consumption from the consumer’s devices of our SaaS products.
There has been research into the amount of energy consumption and efficiency between different programming languages. A SaaS application often uses different programming languages for the server versus client side of the application. Research has also shown that:
- The fastest languages aren’t necessarily the most energy efficient. There are other factors to consider like memory usage and execution time.
- Compiled languages like C, Rust, C++, and Ada tend to be the most energy efficient as well as the fastest.
- The programming languages that use the most energy tend to be interpreted and include: Perl, Python, Ruby, JRuby, and Lua.
However, this is a fairly new area of research, and while some languages are more efficient and faster, how our systems are designed and architectured will likely have a greater impact on energy consumption. Regardless, research like this shows that “where your code runs” does make a difference in the amount of energy consumption and we can compute this.
Developing more energy efficient applications cannot easily be determined by programming language alone. So take some time to think about the long-term impact of the code you write today for the future of an efficient tomorrow.