为什么这个程序在><> (鱼)一段时间后运行这么慢?

时间:2015-07-02 17:14:13

标签: performance debugging slowdown esoteric-languages

深奥的编程语言><>(Fish)中的程序1+:o会随着时间的推移而减慢,我不知道为什么。它在:上减慢最多,它复制堆栈顶部的项目,并在o上稍微减慢,这会打印出堆栈中顶部项目的相应字符。你可以尝试here;只需确保用0初始化堆栈。它会在移动设备(源:我的手机)上减慢速度,以防您想要在更短的时间内检查。

2 个答案:

答案 0 :(得分:0)

之前从未听说过这种语言,但这里有一些可能性:

  1. 您的输出正在增加

    • 所以每次迭代你还有1个字符显示
    • 如果你的追逐者没有某种聪明的提神
    • 然后,对于较高的n
    • ,这将会减慢很多
  2. 不知道你在做什么,因为这种语言对我来说很陌生

    • 但看起来你也在增加一些数组/堆栈/堆/任何大小
    • 每个迭代一个项目,记忆
    • 并且在手机上没有那么多可用的
    • 更不用说重新安置......
  3. 输出看起来像是Unicode

    • 一旦你点击特殊字符,那么它取决于安装的字体
    • 有些角色很慢。
    • 通常的政策是在已安装的字体中查找使用过的代码页,这可能需要一段时间
    • 并且渲染本身也适用于一些不太好的角色。
    • 如果您有一些Unicode字体(不仅仅是块),那么它应该会大大加快速度(尤其是光栅字体)。
    • 但是那里的人并不多,从来没有看到任何完整的东西(它会很大)但是我有一段时间寻找那些......
    • 这里有一个&#34;完成&#34; Unicode字体示例GNU_Unifont

答案 1 :(得分:0)

我在&gt;&lt;&gt;中进行了编程之前,所以我会对此发表看法。

就个人而言,在我的计算机上运行时,我没有经历过程序的。我使用动画运行它,所以我可以看到堆栈和执行速度发生了什么。

堆栈操作似乎在整个时间内以相同的速率发生。我将它运行到3300. 输出似乎变慢了,但是因为外语的字符集使用以某种方式组合或相互交互的字符。这是视觉减速的主要原因,因为必须重写输出,因为某些字符彼此相邻打印。实际上,事实是内存使用量增加的时间越长,输出就越不典型。

此外,还打印了RTL(从右到左)字符,因此该字符后面的所有输出都是从右到左显示的,浏览器不会像以前那样显示,也可能没有优化。< / p>

另一种我可以判断输出正在减慢浏览器速度的方法是,当我暂停执行程序时,页面仍然很慢。我试图放大/缩小,在某些情况下渲染输出需要几秒钟。