ホームページ  >  記事  >  バックエンド開発  >  このネスト ロジックを適切に動作させ、パフォーマンスを向上させるにはどうすればよいですか

このネスト ロジックを適切に動作させ、パフォーマンスを向上させるにはどうすればよいですか

王林
王林転載
2024-02-08 23:24:09585ブラウズ

このネスト ロジックを適切に動作させ、パフォーマンスを向上させるにはどうすればよいですか

php Xiaobian Yuzai さん、コードを作成するときにネストされたロジックの問題が発生し、コードが適切に動作しなかったり、パフォーマンスが低下したりしたことがあるかもしれません。この問題を改善するには、考慮すべき重要な点がいくつかあります。まず、論理構造を再検討して、コードを単純化または再構築してネストのレベルを減らすことができるかどうかを確認します。次に、適切なデータ構造とアルゴリズムを使用してコードを最適化することを検討できます。また、パフォーマンスを向上させるために、コードで計算や冗長な操作が重複していないことを確認してください。最後に、適切なテストとデバッグを実行して、さまざまな状況下でコードが適切に動作することを確認します。これらの方法を通じて、ネストされたロジックを改善し、コードのパフォーマンスを向上させることができます。

質問の内容

コメントを含むデータベースがあり、各コメントには ID と親 ID があります。目標は、親 ID を持つ各コメントをその親コメントの下に効率的に配置することだけです。

私はもともと再帰関数を使用して arranged 配列内の親注釈を検索しましたが、パフォーマンスはひどいものでした。ポインターを使用して親を追跡するようにリファクタリングしました。これはほぼ完璧に機能しますが、処理される最後のコメントが常に出力から除外されるようです。

以下の例では、「コメント 1」は「コメント 11」の子である必要がありますが、出力にはまったく含まれません。

リーリー

更新; これでさらに近づけましたが、より深くネストされたコメントをネストすることができませんでした。奇妙なのは、実行するたびに異なる出力が生成されることです。 リーリー

更新; 同じサンプル データを使用して正しい結果を生成する JavaScript 実装をすぐに作成しましたが、この JS コードは機能するのに Go コードが機能しない理由がわかりません。

リーリー

実行可能な Go の例: https://gist.github.com/dlford/9e66069cfc7fb9afc649c5e3dc650083

実行可能な JS の例: https://gist.github.com/dlford/f6f4a383a99f65659895ed51d1a4b651

Go コード出力 (下部のカウントを参照): https://gist.github.com/dlford/302c4db939c21d15132848368caa01ec

JS コード出力 (下部のカウントを参照): https://gist.github.com/dlford/60ab49d0466c957c7745059022e27e09

Solution

問題は

NestedComment にありますChildren もポインターとして保存する必要があります。

実際の例:

リーリー

以上がこのネスト ロジックを適切に動作させ、パフォーマンスを向上させるにはどうすればよいですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。