java - 为什么NIO的性能比IO好?
阿神
阿神 2017-04-17 17:39:32
0
5
602

我目前已知的原因只有这1个: 就是由于NIO采用缓冲区+通道的方式来传输数据, 而不是IO包的以字节或字符为单元传输数据, 增加了一次处理数据的字节数, 而且这种方式更接近于底层操作系统的IO方式, 所以速度明显优于IO;

除了这一点还有其他的吗?

阿神
阿神

闭关修行中......

全員に返信(5)
迷茫

0zhangzhun132·たった今

1.io はストリーム指向です。つまり、データを読み取るときにストリームから 1 つずつ読み取られるため、データを全体として処理することができず、バッファーがありません。データはバッファに格納され、データの読み取りはバッファ内で実行されるため、データ オフセット操作を実行する方が便利です
2. スレッドが io を操作するとき、現在読み取るデータがない場合、io はブロックされます。 、その場合、スレッドはブロックされます。チャネル上で io が動作するため、チャネルに読み込むデータがない場合、チャネルは他の io
3 を処理するように切り替えることができます。つまり、スレッドはセレクターを介して複数のチャネルを選択できますが、io は

の処理のみを行うことができます。

純粋に手作業で行っておりますので、お役に立てれば幸いです

EOF

いいねを押す +0
洪涛

次のシナリオを想定します。 4 コアのマシンで、ネットワーク リクエストを受信し、ビジネス ロジックを処理し、処理結果をクライアントに返します。 ビジネス ロジックの処理中に、ネットワーク リクエストが 10,000/秒であるとします。ファイルの書き込み。送信に時間がかからないと仮定すると、このファイルは 5 秒間ブロックされる必要があります。

1. BIO 処理を使用します:

ビジネス ロジックの処理では IO 時間が長いため、処理スレッドがブロックされます。複数のリクエストの場合、1 つのリクエストでビジネスを処理するスレッドが生成されるため、5 秒以内に 50,000 個のスレッドが存在する必要があります。ビジネス ロジックを処理するために使用されるシステム。 CPU は、スレッドのスケジューリングを処理するためにリソースのほとんどを使用します。

2. NIO 処理を使用します:
NIO の IO 操作は非同期であり、複数のリクエストの場合、4 つのビジネス スレッドが開かれ、1 つのスレッドが 1 つの CPU スレッドを占有します。ビジネスロジックをフルスピードで処理できます。ビジネスでの IO 操作はハードウェアで非同期に処理でき、データの準備ができたら後続のビジネス処理のために CPU にメッセージが送信されます。現時点では、ビジネスを効率的に処理するために必要なスレッドは 4 つだけです。 CPU がアイドル状態になることはほとんどありません。スレッド スケジューリングでリソースを消費する必要はありません。

いいねを押す +0
刘奇

IO であっても NIO であっても、それは Linux ネットワーク I/O モデルの現れです。Linux ネットワーク モデルを学習することをお勧めします。

いいねを押す +0
Ty80

1.nio はメモリマッピングを行い、ユーザー空間とシステム空間の間の 1 つのコピーを排除します
2.nio は非同期、トリガーされた応答、ノンブロッキング応答で、主に CPU であるシステムリソースを最大限に活用します

いいねを押す +0
巴扎黑

こんにちは

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート