메모리 풀링 속도 확인
374
작성한 질문수 1
안녕하세요,
malloc() 대신 스택 변수로 NODE 배열을 만들어서 사용하는 것을 보았는데요,
정말로 빠른지 확인해보고 싶은데 어떻게 할 수 있을까요?
답변 1
0
안녕하세요.
삽입/삭제가 계속 반복 되도록 루프를 많이 돌려서 걸리는 시간을 측정 하여 비교하면 될 것 같습니다.
0
답변 감사합니다.
삽입/삭제가 계속 반복 되도록 루프를 많이 돌려서 걸리는 시간을 측정 하여 비교하면 될 것 같습니다.
삽입만 하는 것은 시간 차이가 생기지 않나요?
반복 수를 아래처럼 증가해 list_3.c와 list_4.c를 비교해보려고 했습니다.
diff --git a/1.generic_list/list_3.c b/1.generic_list/list_3.c index f6144b67aa8a..a0046a6d4544 100644 --- a/1.generic_list/list_3.c +++ b/1.generic_list/list_3.c @@ -1,5 +1,6 @@ #include <stdio.h> #include <stdlib.h> +#define SIZE 10000000 typedef struct _node { int data; @@ -31,10 +32,8 @@ int main() { NODE head = {0,}; int i; - display(&head); - for(i=0; i<7; i++ ) + for(i=0; i<SIZE; i++ ) { - display(&head); insert_data( i+1 , &head ); } return 0;diff --git a/1.generic_list/list_4.c b/1.generic_list/list_4.c index c4703cfec598..cc4d8a20bcdc 100644 --- a/1.generic_list/list_4.c +++ b/1.generic_list/list_4.c @@ -1,5 +1,6 @@ #include <stdio.h> #include <stdlib.h> +#define SIZE 10000000 typedef struct _node { int data; @@ -27,13 +28,11 @@ void display(NODE *head) int main() { NODE head = {0,}; - NODE temps[7]; + NODE temps[SIZE]; int i; - display(&head); - for(i=0; i<7; i++ ) + for(i=0; i<SIZE; i++ ) { temps[i].data = i+1; - display(&head); insert_data( temps+i , &head ); } return 0;저 정도
SIZE를 쓰면 list_3.c 의 경우는 이제time으로 시간 측정이 되는데 (0이 아닌 시간), list_4.c는 실행 시 아래처럼 에러가 발생합니다.gcc -o list_3 list_3.c gcc -o list_4 list_4.c time ./list_3 real 0.22s user 0.12s sys 0.10s time ./list_4 [2] 268619 segmentation fault (core dumped) ./list_4 real 0.07s user 0.00s sys 0.00s어떻게 하면 제대로 시간 측정을 할 수 있을까요?
1
안녕하세요.
해당 프로그램이 죽는 이유는 스택의 크기 제한에 있는 것 같습니다.
여기서는 메모리 위치 보다는 메모리 풀링이 중요한 개념 이므로 메모리 할당 시점을 아래와 같이 변경하여 테스트 해보시면 삽입 속도의 차이를 알 수 있습니다.
list_3.c

list_4.c

내부의 시간을 측정하는 소스가 있고 단위는 초입니다.
그리고 SIZE는 1000000000 으로 충분한 시간을 측정 하였습니다.
시간이 2배정도 차이나는 것을 확인할 수 있습니다.
이론 재탕
0
2
1
25-1 이론 재탕
0
2
1
강의 전체 수강 및 수료 관련
0
8
1
서브넷 마스크
0
17
1
모의고사 1회 계산문제 2개 맞았는데
0
26
1
업캐스팅 문제 예시 4번 부모 호출
0
33
1
모의고사 자료 해설이 너무 불친절하네요.
0
69
2
부모의 생성자 출력 관련
0
36
2
24-3 이론파트 재탕문제
0
36
0
누락코드
0
36
1
다차원 배열 포인터 질문있습니다
0
52
3
24-2 이론 파트 재탕
0
48
1
모의고사 5회
0
42
1
12분 10초 func(values, 0, 1)을 넣을 때
0
40
1
모의고사 1회 4번 문제와 관련한 질문이 있습니다.
0
43
2
23- 3 재탕문제
0
61
1
23- 1 재탕문제
0
42
0
파이썬 추가 코드
0
57
1
배열 포인터 출력 표시
0
54
2
포인터 증감 또는 값 증감
0
54
2
vi 명령어
0
81
1
Insert_data에서 prev_tmp를 지웠을 때, 성능향을 기대할 수 있을까요?
0
242
1
tail노드의 이유 & 메모리 풀링 관련
0
383
2
커널 버전
0
295
1





