전역변수로 배열 선언하는게 빠름?
함수 안에 동적 할당하는게 빠름?
전역변수로 int arr[10000]과
함수안에 malloc하고 memset으로 0으로 초기화하는거
속도로 치면 전역변수가 훨씬 빠른거냐?
함수안에 memset안하고 malloc과 전역변수 arr[10000]만 비교해도 누가 더 빠른거냐?
전역변수로 배열 선언하는게 빠름?
함수 안에 동적 할당하는게 빠름?
전역변수로 int arr[10000]과
함수안에 malloc하고 memset으로 0으로 초기화하는거
속도로 치면 전역변수가 훨씬 빠른거냐?
함수안에 memset안하고 malloc과 전역변수 arr[10000]만 비교해도 누가 더 빠른거냐?
할당을 결국 어디서 언제하느냐 차이인데 전역변수는 프로그램 시작시 하고 커널모드 또는 유저모드에서 mmap류로 할당하는것이고
동적할당은 malloc호출시 유저모드에서 들어가는건데 얘도 뭐 malloc 구현에 따른 오버헤드가 있기야 하겠지만 결국 mmap류나 brk류 써서 하는거니까 별 차이는 없을거같긴 한데
전역변수는 어차피 0초기화라고 하지만 이것도 결국에는 커널이던 유저모드에서던 어느쪽에서라도 해야되는거기는 하니까.. 근데 dll류는 보통 어차피 유저모드에서 초기화되고 초기화된 메모리를 얻으려면 걍 mmap류로 alloc하면 보통의 경우에는 memset 안해도 됨
이건 환경에 따라 성능차가 있을거같아 뭔가 확답은 못하겠지만 사이즈가 진짜 크면 결국에는 그만큼 초기화속도가 걸리게 되있는데 그게 커널단이냐 유저단이냐 차이는 스케쥴링상 존재..하나? 그런가..? 도와줘요 여러분
전역변수 너무 크게하면 로더에서 죽이는경우도 있을거같기도 하고..