2012-01-18 7 views
2

クライアント側とサーバー側の処理に関する質問があります。私は分けたい、今すぐコレクションをクライアント側またはサーバー側で並べ替える方が速いのはどこですか?

-

私は、オブジェクトのかなり大きなコレクションを持っているが(namelast nameageisAdmin等...日常のフィールドから構成され、「ユーザー」オブジェクトのコレクションを言うことができます)この大きなコレクションは、述語がブール値のフィールドである2つの小さなコレクションになります。isAdmin - ユーザーが管理者であるかどうかを示します。

分離後、さらに複雑な処理を行うために、両方の最終コレクションをサーバー側に送信する必要があります。

私は、クライアントサイドでソートと分割を行う方が効率的になると思っていました(JavascriptやjQueryを使っているのでしょうか?それともトリックですか?)か、大きなコレクションをサーバーに送り、すべて(LINQを使用して分割し、さらに処理する)。

一般的に、サーバー側でクライアント側を使用する方がよい場合はありますか?なぜ?遊んで多くの変数のような存在として

答えて

2

は、本当にこれに対する簡単な答えはありません:コンピューティング

  • 電源はさまざまな言語でアルゴリズムの実装をソート
  • コンピューティングワークロード
  • くださいはjQueryのない言語)

であることを覚えておいてください...そしておそらく他のものの束。

以前は、サーバーが常にクライアントよりも高速だったと言えるかもしれませんが、強力なコンピューティングの高可用性とアプリケーションホスティングの汎用性のため、必ずしも真実ではありません。

しかし、速度の他に、セキュリティなどの考慮すべき事項があります。 Userオブジェクトに機密情報が含まれている場合、本当にそのデータを持つクライアントのコンピュータを信頼しますか?それが依存するよう

+0

"本当にそのデータを持つクライアントのコンピュータを信頼しますか?"もし私がこの声明を複数回アップヴォートすることができれば。私の場合、 – mosid

4

はいつものように、パフォーマンスの問題は、一般的に答えるのは難しいです:

  • データセットのサイズ(「かなり大きなコレクションは」100年代を意味するか、1000000のでしょうか?)
  • クライアント - 側とサーバー側のハードウェア
  • ネットワーク遅延や伝送速度...

あなたは本当にこの1を把握するためにいくつかのテストを行う必要があるだろう。それでも、すべてのユーザーが別のコンピュータに置かれる可能性があるため、私の2001年製ハードウェアでは、16GBのメモリと最も効率的なJavaScriptインタープリタを備えた2011年のクアッドコアを使用しているユーザーとは、

+0

...大きなコレクションは10の結果になるでしょう...クライアントとサーバーの両方が強力なマシンです...ネットワークが遅れている可能性があります。どのように答えを変えますか? –

+0

その小さな数字のために、私の推測はあなたがクライアント側をやるほうがはるかに良いということです。 –