0

私が開発を支援している 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を使用してみましたが、うまくいかなかったようです:/

誰かが洞察を提供できますか、または問題が再帰によって引き起こされている可能性があると思いますか?

4

1 に答える 1

0

何を達成しようとしていますか?一部のボックスは遅く、適用できる最適化の量は限られています。ドキュメント全体を解析する必要がある場合は、通常、必要なものが必要です。同様の問題がありました。アプリが数秒間フリーズし、クラッシュしたように見えましたが、非同期の回転アイコンを表示することで回避しました。

于 2015-10-08T19:57:49.973 に答える