深度优先遍历

时间:2015-08-13 19:26:35

标签: recursion depth-first-search brightscript

我正在尝试为我正在帮助开发的Roku应用程序优化html解析器。解析器当前花费太长时间来解析数据(8秒),它通过遍历遍历每个循环中遇到的每个标记的子节点来完成此操作。

parser (nodes):
 for each node in nodes
   if node.isTag
     parser(node.nodes)
  else if node.isBlock
     text.push(node) 
类似的东西,虽然更复杂!我假设它很慢,因为它是递归的,并且平台上没有尾递归优化等

我不太确定如何实现堆栈以从中移除递归 - 我尝试使用GoTo但似乎不起作用:/

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

1 个答案:

答案 0 :(得分:0)

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