프로그래머스 데브코스에서 C언어에 대한 강의가 있었다
C언어를 배우는 이유는 메모리관점과 포인터에 대한 학습이라고 했는데
메모리의 관점에 대한 내용을 듣고 테스트 해보고 싶은게 생겼다
두 방법을 비교했을때 응답 속도 차이가 얼마나 있을까?
- 요청마다 미들웨어 내부에서 생성자 함수로 객체를 생성했을때(동적으로 힙메모리에 객체 생성후 필요없어진 쓰레기 객체는 js엔진의 가비지컬렉터에 의해 제거됨)
- 프로그램 실행시 프로그램 구동에 있어 필요한 모든 객체들을 힙메모리에 생성(요청마다 힙메모리에 객체를 생성하지 않아도 되고 js엔진이 쓰레기 객체들을 청소하지 않아도 됨)
궁금해서 부하테스트를 진행해 봤다
app.get('/test', (req, res) => {
const test = new SqlTemplate();
res.send(200);
console.log('요청 들어옴');
});
요청이 들어오면 임의의 객체를 생성하고 숫자 200 응답

75000번 요청의 평균값은 0.8ms , p95는 3ms, p99는 4ms
class PetService {
private SqlTemplate;
constructor() {
this.SqlTemplate = new SqlTemplate();
}
//...
testResponse(res: Response) {
res.send(200);
}
}
const petService = new PetService();
export default petService;
//index.ts
app.get('/test', (req, res) => {
petService.testResponse(res);
});
이번에는 생성된 객체를 가져와서 메서드를 통해 응답

75000번 요청은 평균값이 0.3ms, p95와 p99는 1ms
내 예상대로 프로그램 실행시 힙메모리에 프로그램 구동에 필요한 객체를 생성시켜 놓는것이 더 빠르긴하다
하지만 엄청 큰 차이가 있진 않다
비교
| 동적으로 힙메모리 할당 | 정적으로 힙메모리 할당 | |
| 평균 | 0.8ms | 0.3ms |
| p95 | 3ms | 1ms |
| p99 | 4ms | 1ms |
내 서버의 규모가 작아서 그런가..? 그렇게 큰 차이는 없다
내가 내린 장단점
프로그램 실행시 필요한 구동에 필요한 객체들 힙메모리에 생성
장점
- 응답 속도가 비교적 빠르다
- 메모리 효율 증가
단점
- 프로젝트가 커지면 엉덩이가 무거워 진다(실행이 느리다)
요청마다 객체 생성
장점
- 프로그램 엉덩이가 가볍다(실행이 빠르다)
단점
- 응답 속도가 비교적 느리다
몰랐는데 프로그램 실행시 객체들을 1번만 생성하고 전역적으로 사용하는 디자인 패턴이 이미 있었다
싱글톤 패턴이라는 개념인데 알아봐야겠다
'이것저것' 카테고리의 다른 글
| Nginx 502 반환 트러블 슈팅 (0) | 2025.07.09 |
|---|---|
| AI 응답 속도 개선하기 (2) | 2024.08.21 |
| 다마고치 응가 기능 어떻게 구현하지 (0) | 2024.04.24 |
| 쿠키, 세션, 토큰 (0) | 2024.03.28 |
| webpack 개념과 탄생 배경 (0) | 2024.03.21 |