1

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

4

2 回答 2

0

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

  1. 你的输出在增加

    • 所以每次迭代你都会多显示 1 个字符
    • 如果你的咖啡机没有某种智能提神剂
    • 那么这将减慢很多n
  2. 不知道你在做什么,因为这门语言对我来说是陌生的

    • 但看起来你也在增加一些数组/堆栈/堆/任何大小
    • 每次迭代一个项目,这需要内存
    • 在手机上没有那么多可用的
    • 更不用说搬家了……
  3. 输出看起来像 Unicode

    • 一旦你点击特殊字符,它就取决于安装的字体
    • 有些字符很慢。
    • 通常的策略是在已安装的字体中找到使用过的代码页,这可能需要一段时间
    • 并且渲染本身对于某些角色来说也不是很好。
    • 如果你有一些 Unicode 字体(不仅仅是块),那么它应该会大大加快速度(尤其是光栅字体)。
    • 但是那里没有多少人,也从未见过任何完整的(它会很大),但我有一段时间寻找那些......
    • 这里是“完整的”Unicode 字体示例GNU_Unifont 之一
于 2015-07-03T07:59:15.243 回答
0

我之前在 ><> 中编程过,所以我会给出我的看法。

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

堆栈操作似乎始终以相同的速率发生。我运行它超过 3300。输出似乎变慢了,但这是因为外语的字符集使用以某种方式相互组合或交互的字符。这是视觉速度变慢的主要原因,因为某些字符彼此相邻打印,因此必须重写输出。所以实际上,内存使用量会随着运行时间的增加而增加,而且输出是非典型的。

此外,打印了 RTL(从右到左)字符,因此该字符之后的所有输出都从右到左显示,浏览器不习惯并且可能未针对此进行优化。

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

于 2017-01-18T16:27:03.090 回答