# 환경 지속 가능성을 위한 리팩터링

Copilot Chat 는 코드를 보다 환경 친화적으로 만드는 방법을 제안할 수 있습니다.

계산 리소스를 사용하는 데 비효율적인 코드는 에너지 소비가 증가하여 환경에 부정적인 영향을 미칠 수 있습니다. 이러한 코드의 예로는 높은 시간 복잡성, 과도한 메모리 사용량 및 불필요한 처리가 있는 알고리즘이 있습니다.

Copilot Chat 는 에너지 소비 증가에 기여하는 코드에서 비효율적인 알고리즘 또는 리소스 집약적 작업을 식별하는 데 도움이 될 수 있습니다. 보다 효율적인 대안을 제안함으로써 소프트웨어의 환경적 영향을 줄이는 데 도움이 될 수 있습니다.

## 예제 시나리오

다음 Python 코드는 큰 텍스트 파일을 읽고 줄 수를 계산합니다. 그러나 전체 파일을 메모리에 로드하므로 대용량 파일에 비효율적일 수 있으며 에너지 소비가 높아질 수 있습니다. 또한 기본 제공 함수를 사용하는 대신 줄을 수동으로 계산합니다.

```python id=inefficient-code
def count_lines(filename):
    with open(filename, 'r') as f:
        data = f.read()
        lines = data.split('\n')
        count = 0
        for line in lines:
            count += 1
        return count

print(count_lines('largefile.txt'))
```

## 예제 프롬프트

다음은 환경 지속 가능성을 높이기 위해 위의 코드를 리팩터링하는 데 사용할 Copilot Chat 수 있는 프롬프트 예제입니다.

```copilot copy prompt ref=inefficient-code
Refactor this code to improve its environmental sustainability by reducing memory usage and computational overhead.
```

## 응답 예제

> \[!NOTE]
> Copilot Chat 응답은 비결정적이므로 여기에 표시된 응답과 다른 응답을 얻을 수 있습니다.

Copilot 는 생성기 식을 사용하여 파일 줄을 한 줄씩 읽을 것을 제안하므로 메모리 사용량이 줄어듭니다. 또한 기본 제공 `sum` 함수를 사용하여 줄을 보다 효율적으로 계산합니다.

```python
def count_lines(filename):
    with open(filename, 'r') as f:
        return sum(1 for _ in f)  # Efficiently counts lines without loading all into memory

print(count_lines('largefile.txt'))
```

## 추가 읽기

* [GitHub Copilot 채팅에 대한 프롬프트 엔지니어링](/ko/copilot/concepts/prompting/prompt-engineering)
* [GitHub 부필로트 사용에 대한 모범 사례](/ko/copilot/get-started/best-practices)