Scratch1.4和Scratch2.0循环时间的比较
程序语言的循环时间是一个程序语言的基本参数,直接影响了程序的执行速度。2013年9月Scratch语言开发团队公布了Scratch2.0的PC版本,与之前的Scratch2.1相比,循环速度有了很大的提升。本文将通过实验比较两个版本的循环时间上的差异。
● 问题的提出
在Scratch1.4中,如果需要开发一个秒表,可使用如图1所示的程序。
我们发现秒表并不像预想的那样,结束程序之后,小猫会说10,而是多出了0.34的误差,这一误差产生的原因是程序完成一个循环需要时间,这个时间在Scratch1.4之下是多少,我们尝试通过实验进行研究。
● Scratch1.4之下的循环时间测定
为了获取数据,在变量菜单中新建一个链表“时间”,并修改程序,将每次循环结束后的时间存储在链表中(如图2)。
将链表输出为TXT文件在Excel进行分析,首先可以通过差值的方法进行分析(如图3)。
此外,我们还可以通过Excel绘制差值结果的图像,并通过拟合直线的方法来分析循环时间的平均值(如图4)。
研究说明,每次循环大约需要0.033秒,并且循环执行的过程中循环时间基本稳定。但是循环内部“等待1秒”和“将计时器加入链表”可能也需要占用一定的时间,因此我们修改了研究工具(如图5)。
实验发现,Scratch1.4的循环时间是0.0252秒,并且是一个稳定的数据,实验原始数据见下表。
Scratch1.4的循环时间测定
循环次数 时间/秒 差值/秒
100 2.51 2.51
200 5.039 2.529
300 7.554 2.515
400 10.125 2.571
500 12.586 2.461
600 15.098 2.512
700 17.613 2.515
800 20.12 2.507
900 22.655 2.535
1000 25.153 2.498
平均值 2.5153
我们发现,由于Scratch1.4的循环时间是一个稳定值,因此我们只需要用1000次循环的时间除以1000就可以比较准确地测定这个数。这个数据看似比较小,但是在计算机看来已经是一个非常慢的循环速度了,意味着计算机在每秒只能完成40个循环,在Scratch1.4中,提供了超速模式,这种模式使得程序的循环时间大大加快,超速模式的速度是普通模式下的五十分之一(如图6)。
可以看出在超速模式下,执行1000次循环的时间是一般模式下的500倍。
● Scratch2.0下的循环时间测定参考论文
在Scratch2.0中使用类似的方法,测定Scratch2.0的循环时间,我们发现100万次循环的时间为0.82秒,每次循环的时间为8.2×10-7秒,循环时间是Scratch1.4的三万分之一,是Scratch1.4下超速模式的六百分之一(如图7)。
实验发现,在Scratch2.0中的加速模式下循环时间没有变化,加速模式的原理还需要进一步的研究。
● 进一步需要研究的问题
本研究指出了Scratch2.0相对于Scratch1.4的一个不常被发现但是非常重要的改进:循环时间的变化,这种变化使得Scratch能够完成一些复杂的程序和科学计算得以实现(如图8)。
图8所示通过100万次计算,经过5.38秒,将圆周率的计算精确到小数点后第六位,这个程序在Scratch1.4中至少需要7个小时的时间。此外,从计算π的案例出发,我们还可以搜索其他的计算π的算法,并且比较这些算法在效率上的优劣,当然,效率越高,计算速度就会越快。
参考资料;http://zimeitichuangzuo.com/index.php?c=show&id=4989