특정 모듈이 돌기 시작하면, 장비의 성능이 과격하게 떨어지는 문제가 있어서,
해당 모듈을 디버깅 하기 시작했습니다.
어떤 함수를 상당히 자주 호출하는데,
대략 이런식으로 짜여져 있더군요.
int func_a()
{
int ret = 0;
void* p;
p = malloc( 대략 2MB );
/* blah blah.. ret = 1; */
free(p);
return ret;
}
2MB 정도 되는 메모리를 auto varible 로 쓰기 싫으니,
malloc 해서 쓰겠다고 저렇게 만든 것인데,
문제는 이 함수가 지나치게 자주 호출된다는 것이네요.
호출될때 마다 malloc - free 를 반복하다 보니,
이넘의 허접한 임베디드 시스템에서는 꽤나 부하가 걸립니다.
메모리 프레그멘테이션도 생기는 느낌이고요.
여튼 그래서,
int func_a()
{
int ret = 0;
static void* p = NULL;
if (p == NULL)
p = malloc( 대략 2MB );
/* 하략 */
이렇게 static variable 하나 잡아서, free 없이 계속해서
써먹는 걸로 바꾸고 나니 한결 나아진 느낌입니다.
..
이 코드 역시 지금은 퇴사한 사람이 작성한 코드로군요.
제가 이 회사를 퇴사하면, 누군가가 제 코드를 보고서는,
아니 이따위로 코딩해 놓고 퇴사해 버리다니..
하며 뒷담화를 깔 사람이 아마도 많이 있겠지요?
"웬 초콜릿? 제가 원했던 건 뻥튀기 쬐끔과 의류예요." "얘야, 왜 또 불평?"
-> 자음 19개와 모음 21개를 모두 사용하는 pangram
- 이쁜왕자 -
- Valken the SEXy THief~~ ^_* -