深奥的编程1+:o
语言><>(Fish)中的程序会随着时间的推移而变慢,我不知道为什么。它在 上减慢最多:
,它复制堆栈顶部的项目,在 上减慢一些o
,它打印出堆栈中顶部项目的相应字符。你可以在这里试试;只需确保用 0 初始化堆栈。它在移动设备上会减慢速度更快(来源:我的手机),以防您想检查更少的时间。
2 回答
0
以前从未听说过这种语言,但这里有一些可能性:
你的输出在增加
- 所以每次迭代你都会多显示 1 个字符
- 如果你的咖啡机没有某种智能提神剂
- 那么这将减慢很多
n
不知道你在做什么,因为这门语言对我来说是陌生的
- 但看起来你也在增加一些数组/堆栈/堆/任何大小
- 每次迭代一个项目,这需要内存
- 在手机上没有那么多可用的
- 更不用说搬家了……
输出看起来像 Unicode
- 一旦你点击特殊字符,它就取决于安装的字体
- 有些字符很慢。
- 通常的策略是在已安装的字体中找到使用过的代码页,这可能需要一段时间
- 并且渲染本身对于某些角色来说也不是很好。
- 如果你有一些 Unicode 字体(不仅仅是块),那么它应该会大大加快速度(尤其是光栅字体)。
- 但是那里没有多少人,也从未见过任何完整的(它会很大),但我有一段时间寻找那些......
- 这里是“完整的”Unicode 字体示例GNU_Unifont 之一
于 2015-07-03T07:59:15.243 回答
0
我之前在 ><> 中编程过,所以我会给出我的看法。
就个人而言,在我的计算机上运行该程序时,我并没有经历太多的减速。我用动画运行它,所以我可以看到堆栈和执行速度发生了什么。
堆栈操作似乎始终以相同的速率发生。我运行它超过 3300。输出似乎变慢了,但这是因为外语的字符集使用以某种方式相互组合或交互的字符。这是视觉速度变慢的主要原因,因为某些字符彼此相邻打印,因此必须重写输出。所以实际上,内存使用量会随着运行时间的增加而增加,而且输出是非典型的。
此外,打印了 RTL(从右到左)字符,因此该字符之后的所有输出都从右到左显示,浏览器不习惯并且可能未针对此进行优化。
我可以告诉输出减慢浏览器的另一种方法是,当我暂停程序执行时,页面仍然很慢。我尝试放大/缩小,在某些情况下渲染输出需要几秒钟。
于 2017-01-18T16:27:03.090 回答