关于使用位操作与使用取模操作求奇偶数的性能比较。
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
5
namespace ConsoleApplication44
6
{
7
class Program
8
{
9
static void Main(string[] args)
10
{
11
int a = 55877554;
12
int len = 500000000;
13
14
DateTime start1 = DateTime.Now;
15
16
for (int i = 0; i < len; i++)
17
{
18
OddEven.IsEven(a);
19
}
20
21
TimeSpan ts1 = DateTime.Now - start1;
22
23
Console.WriteLine("使用位操作的时间:" + ts1.TotalMilliseconds);
24
25
DateTime start2 = DateTime.Now;
26
27
for (int i = 0; i < len; i++)
28
{
29
Mod2.IsEven(a);
30
}
31
32
TimeSpan ts2 = DateTime.Now - start2;
33
34
Console.WriteLine("使用求模操作的时间:" + ts2.TotalMilliseconds);
35
}
36
}
37
38
/// <summary>
39
/// 判断一个整数是奇数还是偶数。使用位操作
40
/// </summary>
41
static class OddEven
42
{
43
static public bool IsEven(int a)
44
{
45
return ((a & 1) == 0);
46
}
47
48
static public bool IsOdd(int a)
49
{
50
return !IsEven(a);
51
}
52
}
53
54
/// <summary>
55
/// 判断一个整数是奇数还是偶数。使用求模操作
56
/// </summary>
57
static class Mod2
58
{
59
static public bool IsEven(int a)
60
{
61
return ((a % 2) == 0);
62
}
63
64
static public bool IsOdd(int a)
65
{
66
return !IsEven(a);
67
}
68
}
69
}
70
using System;2
using System.Collections.Generic;3
using System.Text;4

5
namespace ConsoleApplication446
{7
class Program8
{9
static void Main(string[] args)10
{11
int a = 55877554;12
int len = 500000000;13

14
DateTime start1 = DateTime.Now;15

16
for (int i = 0; i < len; i++)17
{18
OddEven.IsEven(a);19
}20

21
TimeSpan ts1 = DateTime.Now - start1;22

23
Console.WriteLine("使用位操作的时间:" + ts1.TotalMilliseconds);24

25
DateTime start2 = DateTime.Now;26

27
for (int i = 0; i < len; i++)28
{29
Mod2.IsEven(a);30
}31

32
TimeSpan ts2 = DateTime.Now - start2;33

34
Console.WriteLine("使用求模操作的时间:" + ts2.TotalMilliseconds);35
}36
}37

38
/// <summary>39
/// 判断一个整数是奇数还是偶数。使用位操作40
/// </summary>41
static class OddEven42
{43
static public bool IsEven(int a)44
{45
return ((a & 1) == 0);46
}47

48
static public bool IsOdd(int a)49
{50
return !IsEven(a);51
}52
}53

54
/// <summary>55
/// 判断一个整数是奇数还是偶数。使用求模操作56
/// </summary>57
static class Mod258
{59
static public bool IsEven(int a)60
{61
return ((a % 2) == 0);62
}63

64
static public bool IsOdd(int a)65
{66
return !IsEven(a);67
}68
}69
}70

这个例子运行的结果还是位操作更快。
时间分别为3381毫秒和3974毫秒。


浙公网安备 33010602011771号