あたりとしてOPの要求私は(うまくいけば、自分の馬鹿を加えることなく:P)におけるチップよ
再帰はより洗練されたコーディング方法であるという点で、私たち全員が同意していると思います。うまく行けば、保守性の高いコードを作成できます。これは、0.0001msを削減することと同じくらい重要です(それ以上ではないにしても)。
JSがTail-call最適化を実行しないという議論に関する限り、それは完全に真実ではありません。ECMA5の厳格モードを使用するとTCOが有効になります。しばらく前にはあまり満足していなかったが、少なくとも今arguments.callee
は厳密モードでエラーをスローする理由を知っている。上記のリンクはバグレポートにリンクしていますが、バグはWONTFIXに設定されています。さらに、標準TCOが近づいています:ECMA6(2013年12月)。
本能的に、そしてJSの機能的性質にこだわり、再帰は99.99%の時間でより効率的なコーディングスタイルだと思います。ただし、Florian Margaine氏は、ボトルネックは他の場所で見つかる可能性が高いと述べています。DOMを操作している場合は、可能な限り保守可能なコードの記述に集中するのが最適です。DOM APIとは、遅いものです。
私はどちらがより速い選択肢であるかについて決定的な答えを提供することは不可能に近いと思います。最近、jsprefの多くは、私はChromeのV8エンジンがあることを示して見てきたのです途方もなくその逆FFのSpiderMonkeyのと副に遅くなる4倍を実行するいくつかのタスク、で速いし。最新のJSエンジンには、コードを最適化するためのあらゆる種類のトリックがあります。私は専門家ではありませんが、たとえばV8はクロージャー(および再帰)に対して高度に最適化されていますが、MSのJScriptエンジンはそうではありません。SpiderMonkeyは、DOMが関係している場合にパフォーマンスが向上することがよくあります...
要するに、JSでいつもそうであるように、どの手法がよりパフォーマンスが良いかは、予測するのが不可能に近いと言えます。