【问题标题】:What is the fastest infinite loop in TI-84+ Basic?TI-84+ Basic 中最快的无限循环是什么?
【发布时间】:2017-04-23 01:35:34
【问题描述】:

既然技术上有 4 种类型的循环(for、while、repeat 和 goto/lbl),那么“无限”使用哪一种最快?这就是我的意思:

while 1
End

repeat 0
End

lbl 1
goTo 1

for(n, 1, [number large enough to function as practically infinite]
End

其中哪一个是最快的,还是有更快的?

【问题讨论】:

  • 每次计算器到达 goto 语句时,它都会从程序的最开始处开始,一直向下直到找到 lbl。除非 lbl 位于程序的最开始,否则最好避免使用 goto。
  • 如果是开头,是不是还比while/repeat慢?
  • 我认为它是。我不确定,但是如果重复 0 那么 End 是三个字节的组合,那么我会认为 lbl1 然后 goto1 将是四个。
  • 似乎没有人说显而易见的,所以我会说:所有“无限”循环都同样快,因为所有循环都花费相同的时间。

标签: texas-instruments ti-basic


【解决方案1】:

就大小和速度而言,repeat 和 while 循环是最快的。

While 1Repeat 0都是2个字节,End是1个,空间上都是4个字节。

在速度方面,同样如此。试着做一个简单的程序,循环到无穷大并计时。

TL;DR:While 1: EndRepeat 0: End

【讨论】:

    【解决方案2】:

    技术上最快的是:

    AsmPrgm
    18FE
    

    它必须作为汇编程序运行。

    这是使用 Z80 组件创建一个无限循环(除非通过重置按钮,否则不可停止)循环。代码由处理器直接运行,因此操作系统无需花时间解释它。

    【讨论】:

    • "loop: jr loop" 是每次迭代 12 个周期。 “loop:jp loop”是 10。但最快的 Z-80 无限循环是“ld hl,loop;loop:jp (hl)”,每次迭代 4 个周期。但是,我对 TI-84+ BASIC 及其 AsmPrgm 的了解还不够,无法表达那些需要绝对地址的循环。
    • 好点。 loop 的值取决于您的操作系统版本,并且因计算器而异。当然,如果您使用的是带彩色显示屏的 TI-84,我的回答还需要 Asm84CPrgm 而不仅仅是 AsmPrgm
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    相关资源
    最近更新 更多