Source Code Energy Optimizer
Developer Names: Sevhena Walker, Mya Hussain, Ayushi Amin, Tanveer Brar, Nivetha Kuruparan Supervisor: Dr. David Istvan
Date of project start: September 16th 2024
Project Overview: The goal of this project is to develop tools to improve the energy efficiency of engineered software through refactoring without altering the intent of the source code.
Key Features
-
Refactoring Library
- Provides automated refactoring tools aimed at optimising code for energy efficiency while preserving its functional behaviour.
- Analyses code to identify energy-intensive patterns and recommends or applies energy-saving transformations.
- Ensures refactored code remains maintainable and efficient across different platforms.
-
Python-Specific Refactoring Optimization
- Tailors energy-efficient refactoring strategies based on the specific characteristics of Python.
- Provides guidelines and transformations to minimise energy consumption while maintaining code compatibility.
- Adapts to the unique performance and energy model of Python.
-
Reinforcement Learning for Refactoring Preferences
- Utilises reinforcement learning to adapt refactoring strategies based on past performance data.
- Continuously improves the refactoring process by learning which transformations lead to the greatest energy savings.
- Continuously improves the refactoring process by learning which transformations lead to most technically sustainable (readable) code.
-
DevOps GitHub Integration
- Integrates with GitHub to automatically trigger energy-efficient refactoring as part of the CI/CD pipeline.
- Provides version control, ensuring that refactoring changes can be tracked, tested, and validated before deployment.
- Implements an automated feedback loop that records energy consumption data and feeds it back into the library's reinforcement learning model.
- Automates testing of source code within the DevOps workflow to ensure that behaviour is maintained.
Nice-to-Have Features:
-
Library Plugin
- Offers a plugin extension for popular IDEs and platforms, allowing developers to easily incorporate the refactoring library into their existing workflows.
- Provides real-time suggestions and refactoring options within the development environment, enhancing usability and accessibility.
- Synchronizes plugin with website allowing developers to view measurements taken in a visual manner (i.e. graphs, tables).
-
Human-in-the-Loop Reinforcement Learning
- Involves human feedback in the reinforcement learning process to guide the system's refactoring decisions based on developer expertise and preferences.
- Balances automated refactoring with human oversight to ensure that complex refactoring decisions align with the project's goals and constraints.
The folders and files for this project are as follows:
docs - Documentation for the project
refs - Reference material used for the project, including papers
src - Source code
test - Test cases
etc.
Metadata
Release files for ecooptimizer 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ecooptimizer-0.1.0.tar.gz | 15.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ecooptimizer-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.2 MB
Release files / ecooptimizer-0.1.0.tar.gz
| Download URL | ecooptimizer-0.1.0.tar.gz |
|---|---|
| Size | 15.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ed3585d00a9a44d8bb711fe9b047f5639e6a38a437c23fafb4007846d521fc9e
|
|
BLAKE2b-256 checksum How to use checksums |
119b85b684b0993b7791720b27d70243c9902c77d2f435d0fcd8ce91b0ae4a9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.11
|
Release files / ecooptimizer-0.1.0-py3-none-any.whl
| Download URL | ecooptimizer-0.1.0-py3-none-any.whl |
|---|---|
| Size | 74.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ce8fe351c60e7ebf288f888125f7777f4506dcbd84e7dfc292667d085653fa24
|
|
BLAKE2b-256 checksum How to use checksums |
9d70c99949c43cd8ea765a915d82f1fc4afe4afd7882acfd0de2981e2faea260
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.11
|