深度优先遍历

Depth first traversal

我正在尝试为我帮助开发的 Roku 应用程序优化 html 解析器。解析器当前解析数据的时间太长(8 秒),它通过递归遍历 for each 循环中遇到的每个标记的子代来实现。

parser (nodes):
 for each node in nodes
   if node.isTag
     parser(node.nodes)
  else if node.isBlock
     text.push(node) 

类似的东西,虽然更复杂!我假设它很慢,因为它是递归的,并且平台上没有尾递归优化等

我不太确定如何实现堆栈以从中删除递归性 - 我试过使用 GoTo 但似乎没有用:/

任何人都可以提供一些见解,或者您是否认为问题可能是由递归引起的?

你想达到什么目的? 有些盒子很慢,您只能应用一定量的优化。如果你需要解析整个文档,它通常需要什么就拿什么。我们遇到了类似的问题,应用程序冻结了几秒钟,看起来像是崩溃了,但我们通过显示异步旋转图标解决了这个问题。