编程语言中运算符的运算效率 |
您所在的位置:网站首页 › 运算符ln › 编程语言中运算符的运算效率 |
在使用各种计算机语言编程时,同一种问题可能有好几种解决方案,比如在使用取余运算符时,‘%’操作符和‘ - ’操作符其实使用样的效果,结果都一样,用那种效率比较好? 摘自: http://wenku.baidu.com/link?url=B89DssVNk7J3hGvkt97JU_50kQu-qn6aUdpeUd2dzh2hTBeUt-b6oLH44K-bRah-g95dhH-zzBwkdxioX6jgwXaEmUPczatrnsS_flzEYS_ 我们就从代码细节与算法设计两方面,比较不同程序执行时间的异同,从而选择其中较优的算法,提高程序运行效率。 本试验所采用的环境是: CPU Celeron 3.06GHz,内存248M,操作系统Windows XP SP2,程序语言C。编译环境Dev-c++。以下称为1号机。配置略好于NOIP标准测试机CPU 2.0GHz。 一、基本运算的速度 为了增强算法效率的计算准确性,我们采用重复试验20次取平均值的做法。每次试验运行100000000次。 基本运行时间,是指在准备计算的运算复杂度之外,只包括循环控制变量的加减与比较所消耗的时间。要从实际运行时间中减去基本运行时间,才是这种 运算真正的运行时间,称为净运行时间。 #include main() { int i,j; double a,b,sum=0; for(j=0;j long source = 1345634571234556l; long source_after = 1200000000000000l; long length = 40; long[] timeSub = new long[40]; for(int i = 0; i < 40; i++){ long start = System.currentTimeMillis(); long outCome = source / source_after; long end = System.currentTimeMillis(); timeSub[i] = end - start; System.out.println("result:" + timeSub[i] + ", start:" + start + ", end:" + end); } long result = 0; for(int i = 0; i < timeSub.length; i++){ result = result + timeSub[i] / length; } System.out.println("% time sub result:" + result); long[] timeSub_ = new long[40]; for(int i = 0; i < 40; i++){ long start = System.currentTimeMillis(); long outCome_ = source - source_after; long end = System.currentTimeMillis(); timeSub_[i] = end - start; System.out.println("result_:" + timeSub_[i] + ", start:" + start + ", end:" + end); } long result_ = 0; for(int i = 0; i < timeSub.length; i++){ result_ = result_ + timeSub_[i] / length; } System.out.println("- time sub result:" + result_); System.out.println("Hello World!"); } } 代码大概的意思就是说取一个很大的long类型的数,依次执行‘-’和‘%’操作,求一下时间差的平均值, 结果看图:
后来我又分别试了*,/符号,发现执行结果都是这样。 做这个测试的目的就是因为我做的东西里面需要高频,大量的操作,我把'%' 改成了'-'解决了一些问题,所以特意测试下,结论如下: 在当前CPU这么NB的时代,这样执行是没有任何响应时间差别的,但是呢,如果持续的高频大量的操作,就会有问题了,比如一般的明显效率对比:- 肯定比 % 快,位操作肯定比 + ,-,*,/快,所以建议使用如果环境所迫,最好使用效率相对较高的运算符。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |