主题:请问mltx老师我两个程序的执行速度为什么是反过来的
我编写了一段代码,就是把一个一维实数数组里相同的数放在一起,不讲究大小顺序。
程序一是最逻辑很简单,就是从一个元素起,将其后的元素与它比较,相同就放在后面,是两个do循环。穷尽所有数组。
那时我认为效率不高,比如一个数组已经是相同的元素在一起了,则程序一还是会一个个移动,不能判断相同的就不需要移动。于是我想除了一个程序二。
程序二是这样的,也是两层do循环,加了一些判断条件,同时从两头开始,先判断“第二个”和“倒数第二个”(相对的,见程序)是否与前面(后面)的元素一致,则不需交换。虽然说起来很简单,但是实现起来还是很麻烦。(见附录程序)
但是我通过profile执行时间分析,即使对全相同的元素数组来说,结果还是程序一快很多,你们可以运行看看。
我不能理解,虽然程序二代码多,但是对于相同元素的数组来说,其实际上运行的代码比程序一少很多,就是一个判断,不需要移动。
真是被自己给娱乐了,一开始还满是期待了,花了一个多小时整出来的东西。[em10][em10]
对于程序速度的影响有哪些方面[em18][em18]
编程时追求速度应该遵循一些什么原则,或经验。。[em18][em18]
求教!!!
程序一是最逻辑很简单,就是从一个元素起,将其后的元素与它比较,相同就放在后面,是两个do循环。穷尽所有数组。
那时我认为效率不高,比如一个数组已经是相同的元素在一起了,则程序一还是会一个个移动,不能判断相同的就不需要移动。于是我想除了一个程序二。
程序二是这样的,也是两层do循环,加了一些判断条件,同时从两头开始,先判断“第二个”和“倒数第二个”(相对的,见程序)是否与前面(后面)的元素一致,则不需交换。虽然说起来很简单,但是实现起来还是很麻烦。(见附录程序)
但是我通过profile执行时间分析,即使对全相同的元素数组来说,结果还是程序一快很多,你们可以运行看看。
我不能理解,虽然程序二代码多,但是对于相同元素的数组来说,其实际上运行的代码比程序一少很多,就是一个判断,不需要移动。
真是被自己给娱乐了,一开始还满是期待了,花了一个多小时整出来的东西。[em10][em10]
对于程序速度的影响有哪些方面[em18][em18]
编程时追求速度应该遵循一些什么原则,或经验。。[em18][em18]
求教!!!