对于比较模运算与位运算速度的一次实践 注意:我的实践结果是错误的,一定要相信正解!!!!!!!!

再次提醒:位运算确实比模运算快!!!我的实践结果是错误的!!!

引言:

        大家都是敲代码的,好多也都是acm选手,相信很多人都经常会遇到分辨奇偶性,有的人喜欢if (n % 2)判奇数,而有的人特别是一些大佬则喜欢if (n & 1)判奇数,两种当然是都能判的,但是问题来了,打acm的玩家会更考虑时间,哪种方法更快呢???

我就正好碰到一个群里的大佬们讨论这个问题,于是就有了这次实践,然而结果却是........... 

实践目的:

        用自己的电脑实测一下位运算与模运算的快慢

实践过程:

      跑时环境:  开机有不短的时间了,把在用的后台清了一下,写了两个程序分开跑2e9次for循环,,两个程序基本没差,用clock()函数计时,总的来说环境比较粗糙,也算是一时兴起才测的

      两个程序 : 

//位运算 
#include<bits/stdc++.h>
using namespace std;
const int maxn = (int)2e9;
int x = 3;
int main()
{
	clock();
	for (int i = 0;i < maxn;i ++)
		x & 1;
	printf("位运算:%d\n",clock());
	return 0;
} 



//模运算 
#include<bits/stdc++.h>
using namespace std;
const int maxn = (int)2e9;
int x = 3;
int main()
{
	clock();
	for (int i = 0;i < maxn;i ++) 
		x % 2;
	printf("模运算:%d\n",clock());
	return 0;
} 

实践结果:

       两个程序分别运行了十次,得出的时间求其平均值

       对于位运算的结果是:3225.2

       对于模运算的结果是:3217.6

结果很明显的错了,具体我也不清楚为什么,大概是环境太粗糙了,

不过还是可以得出一个结论的:

                     位运算基本与模运算时间没差:

结语:

       虽然得出的结果是错误的,但这仍是一次尝试,也挺有趣的,这让我尝到了编程的甜头,有什么好纠结的,用OMG笑容的话来说:  就是干!!!

猜你喜欢

转载自blog.csdn.net/cloudy_happy/article/details/81458859