Scratch 教程:2 技术(2/3)

2.14 时序

有时我们需要知道执行⼀段代码需要多⻓时间。我们可以为此使⽤计时器块。为了测量时间,我们使⽤变量 t 。

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

2.14.1 动画循环

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

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

图片[1]-Scratch 编程:命令

2.14.2 空循环

空循环重复 10 次需要多⻓时间?时间太短,⽆法测量。即使我们增加到1000次,测量的时间仍然显⽰为0。我们需要重复循环100万次,才能测量⼀些东西。总时间为 1.2 秒。因此执行空循环只需要 1.2 us。

图片[2]-Scratch 编程:命令

2.14.3 简单赋值

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

图片[3]-Scratch 编程:命令

逐块更改需要相同的时间,⼤约 0.8 us 。

图片[4]-Scratch 编程:命令

2.14.4 数学运算

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

图片[5]-Scratch 编程:命令

2.14.5 字符串操作

⼀个简单的字符串运算与数学运算所⽤的时间⼤致相同。访问字符串中的索引字⺟需要 1.2 us。

图片[6]-Scratch 编程:命令

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

图片[7]-Scratch 编程:命令

2.14.6 定时器的分辨率

定时器的分辨率是多少?它有微秒分辨率吗?

事实上现在。 Scratch计时器是⼀个⾮常低分辨率的计时器。为了测量其分辨率,我们将所有计时器值记录在⼀个列表中。

图片[8]-Scratch 编程:命令

当记录 100000 次值时,我们得到以下值:

增量为 54、47、38、45、43、36、37 毫秒。这是⼀个⾮常粗糙的计时器,我们在进行测量时必须考虑到这一点。

图片[9]-Scratch 编程:命令
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片