겸손한 개발을 위한 자양분

일단, 생각할 수 있는 가장 간단한 코드로 구해본 CPU 점유율

 CRITICAL_SECTION cs;
 InitializeCriticalSection(&cs);

 DWORD prvTick=GetTickCount();
 for(int i = 0; i<1000000; i++)
 {
  EnterCriticalSection(&cs);
  Sleep(0);
  LeaveCriticalSection(&cs);
 }
 DWORD curTick = GetTickCount() - prvTick;

위의 코드에서
CS를 썼을 때에는 0.78초
CS를 안썼을 때에는 0.81초의 TickCount가 반환

즉, CS의 점유율이 100만번 호출에 0.03 초라는 계산.

위의 코드에서도,
사실 정확히 하려면 쓰레드의 KernelTime과 UserTime 을 구해 더해야하겠지만,
ns로 반환되는 KernelTime/UserTime 의 오차율이 ms를 상회하는 약 0.06초 이므로 의미가 없다.

멀티 쓰레드 환경에서의 점유율도 구해야하겠지만 귀찮으므로 pass.