深度优先遍历
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 但似乎没有用:/
任何人都可以提供一些见解,或者您是否认为问题可能是由递归引起的?
你想达到什么目的?
有些盒子很慢,您只能应用一定量的优化。如果你需要解析整个文档,它通常需要什么就拿什么。我们遇到了类似的问题,应用程序冻结了几秒钟,看起来像是崩溃了,但我们通过显示异步旋转图标解决了这个问题。
我正在尝试为我帮助开发的 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 但似乎没有用:/
任何人都可以提供一些见解,或者您是否认为问题可能是由递归引起的?
你想达到什么目的? 有些盒子很慢,您只能应用一定量的优化。如果你需要解析整个文档,它通常需要什么就拿什么。我们遇到了类似的问题,应用程序冻结了几秒钟,看起来像是崩溃了,但我们通过显示异步旋转图标解决了这个问题。