2.14 时序

有时候,我们需要知道某段代码的执行时间,可以使用计时器块来实现。使用变量t来记录时间,具体实现如下:

  • 开始:以t为单位记住开始时间
  • 结束:从当前时间减去开始时间t

2.14.1 动画循环

Scratch中的循环被减慢以允许简单的动画。让我们测量重复移动块10次所需的时间。

总时间为0.32秒。因此,循环时间为32毫秒,大约相当于每秒30帧。

1.png

2.14.2 空循环

重复执行空循环10次所需的时间太短,无法测量。即使我们增加到1000次,测量的时间仍然显示为0。我们需要重复循环100万次才能测量到一些东西。总时间为1.2秒。因此执行空循环只需要1.2微秒。

图2

2.14.3 简单赋值

当添加一组阻塞时间增加到2时,我们得出结论,单独阻塞的集合需要0.8微秒。

图3

逐块更改需要相同的时间,大约0.8微秒。

图4

2.14.4 数学运算

将add块放入set以阻止循环执行时间变为3微秒。因此,我们得出结论,添加块需要1微秒。

图5

2.14.5 字符串操作

一个简单的字符串运算与数学运算所用的时间大致相同。访问字符串中的索引字母需要1.2微秒。

图6

然而,连接块需要复制字符串。随着字符串变长,此操作需要越来越多的时间。我们将重复次数减少到100000。在这个任务中,我们将字母“x”添加到字符串变量中。字符串长度从1到100000不等。平均字符串长度为50000。现在平均连接操作需要8微秒。

图7

2.14.6 定时器的分辨率

Scratch计时器的分辨率是多少?它是否具有微秒级别的分辨率?

实际上,Scratch计时器的分辨率很低。为了测试其分辨率,我们将所有计时器值记录在列表中。

图8

记录了100000次值后,得到的增量分别为54、47、38、45、43、36、37毫秒。这表明Scratch计时器是一种非常低精度的计时器,我们在进行测量时需要考虑到这一点。

图9

标签: Scratch, Scratch编程, Scratch中国, 少儿编程, Scratch社区, Scratch编程社区, Scratch编程课程, Scratch编程教程