#include <stdio.h>
int compare(int source, int dest);
int main(void)
{
int value1 = 1;
int value2 = 2;
int value3 = 1;
int result1 = compare(value1, value2);
int result2 = compare(value1, value3);;
if (result1)
{
printf("value1 과 value2 값은 같습니다. %d \n", result1);
}
else
{
printf("value1 과 value2 값은 같지 않습니다. %d \n", result1);
}
if (result2)
{
printf("value1 과 value3 값은 같습니다. %d \n", result2);
}
else
{
printf("value1 과 value3 값은 같지 않습니다. %d \n", result2);
}
return 0;
}
int compare(int source, int dest)
{
return !(source - dest);// !(source ^ dest) xor 두비트가 같을때만 0을 리턴
}
결과1
이 코드는 비교연산을 사용하지 않습니다.
소스 코드 : main2.c
#include <stdio.h>
#include <windows.h>
#define MAX 100000000
int compare1(int source, int dest);
int compare2(int source, int dest);
int main(void)
{
int result1 = 0;
int value1 = 0;
int value2 = 0;
unsigned int time1 = 0;
unsigned int time2 = 0;
unsigned int time3 = 0;
int result2 = 0;
int count1 = 0;
time1 = GetTickCount();
while (count1 < MAX)
{
result1 = compare1(value1, value2);
count1++;
}
time1 = GetTickCount() - time1;
count1 = 0;
time2 = GetTickCount();
while (count1 < MAX)
{
result1 = compare2(value1, value2);
count1++;
}
time2 = GetTickCount() - time2;
count1 = 0;
time3 = GetTickCount();
while (count1 < MAX)
{
result2 = (value1 == value2);
count1++;
}
time3 = GetTickCount() - time3;
printf("compare1 : %d \n", time1);
printf("compare2 : %d \n", time2);
printf(" == : %d \n", time3);
return 0;
}
int compare1(int source, int dest)
{
return !(source ^ dest);
}
int compare2(int source, int dest)
{
return !(source - dest);
}
결과2
'Programing - C > C Basic grammar ' 카테고리의 다른 글
092 realloc 메모리 재할당 (0) | 2017.07.28 |
---|---|
091 calloc (0) | 2017.07.28 |
090 malloc 메모리 동적 할당 (0) | 2017.07.28 |
메모리 영역에 대한 이해 (0) | 2017.07.28 |
take rest 02 중복 되지 않는 첫번째 문자 값을 찾아 리턴 (0) | 2017.07.28 |