2017-04-14 160 views
0

配列を返すRESTful APIを実装しています。バックエンドコードまたはJavaScriptで降順で配列をソートする方が効率的かどうかを知りたいですか?フロントエンドまたはバックエンドでの配列のソート

+0

データはデータベースから取得されたもので、データセットの量はどれくらいですか? – Brennan

+0

ほとんどの場合、MySQLなどのデータベースを使用している場合はバックエンドで高速になりますが、トラフィックが多い場合はボトルネックになる可能性があります。 –

+0

@Brennanはい、それはデータベースから来て、私は20行だけをプル – edash

答えて

0

あなたのAPIはnクライアントで使用されます。パフォーマンスを考慮すると、サーバがすべてnクライアントに対して行うのではなく、各クライアントが独自にソートを行うようにすると意味があります。単純に、サーバーのCPU使用量を減らします。

また、結果をソートする必要があるかどうかは、データを使用するアプリケーションの性質によって異なります。アプリケーションがそれを決定させる。

実際にパフォーマンスの問題が発生する前に、パフォーマンスの部分を過ぎ去ってはいないでしょう。また、データのソートは実際にはコストがかからず、情報が内部的にどのように保持されているか(たとえばDBMS-sなど)によってソートがすでに行われていることもあります。最大20行で

編集

並べ替えのない、それは本当に何の重要な違いは行いません - API実装する開発者の人生を容易にし、バックエンド側の小さなソートを行います。

0

これは必要に応じて異なります。少量のデータがある場合は、FEですべてを行うことができます。そのため、ユーザーは異なる並べ替えのために同じ配列を読み込まないでください。

多くのデータとページネゴシエーションでは、もちろんバックエンドで行う方がよいです。

0

RESTful APIは、それを使用する開発者向けに構築されています。返される値、表示されるエラー、ヘッダーさえも、APIを使用する際に開発者が持つ「ユーザーエクスペリエンス」の一部です。

これでパフォーマンス上の懸念から控除する必要があります。潜在的に多くのデータですか?ページングなどでそのデータを制限できますか?チェックされていない状況では、サーバー上で長いソート操作を実行すると、そのユーザーだけでなく他のユーザーにとっても大幅にパフォーマンスが低下する可能性があります。つまり、サーバーは通常、ソートのパワーが非常に高く、適切な言語/アルゴリズムを使用しても、問題に対するマルチスレッドのアプローチが提供される可能性があります。だからあなたがサーバー側に影響を与えることを心配していないなら、ほとんどの場合、私はサーバー上でそれをやるでしょう。

0

このように考えてみましょう。サーバが仕事や個人のブラウザをやりたいのですか...効率は彼らのシステムのハードウェアとソフトウェアになります。いつでもあなたは負荷を "ブラウザには少しオーバーヘッドになるでしょう。しかし、クライアントシステムのすべての側面を知ることができないため、短い答えは誰も知らないのです。

これは、ちょうど配列の解析です。より大きい(大規模な、私は巨大なことを意味する)データセットを使って...あなたが求めているのは、配列のサーバー側とクライアント側の処理の間にわずかに目立つかもしれません。しかし、それが "巨大ではない"場合 - パフォーマンスの立場から6つの一方通行になる可能性が最も高い。

ベストプラクティスは、私の意見では、オーバーヘッドを制御できるコードを維持することです。サーバ側。

0

データがどこにあるか、どれだけ持っているか、達成したい目標によって異なります。

フロントエンドベースのソリューションは、サーバーCPUのコストがかかりませんが、ユーザーエクスペリエンスがひどくなる可能性があります。古いPCにインストールされたIEでソートされた100000個の機能の配列を想像してみてください。それはブラウザをハングする可能性があります。

処理するデータが非常に多く、サーバー上のCPU使用率が重要な場合は、フロントエンドを使用するか、それ以外の場合はバックエンドを使用します。

+0

あなたはすでに1ページに100000の機能をレンダリングしていますか?それはかなりの情報です –

+0

はい私はしました。 1つの地図キャンバスに100,000点以上のジオポイントとラインがあります。 –

関連する問題