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

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

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

阿神
阿神

闭关修行中......

membalas semua(5)
迷茫

0zhangzhun132·Tadi

1.io berorientasikan aliran, iaitu, apabila membaca data, ia dibaca dari aliran satu demi satu, jadi data tidak boleh diproses secara keseluruhan dan tiada penimbal nio, dan data disimpan dalam penimbal , membaca data dilakukan dalam penimbal, jadi lebih mudah untuk melakukan operasi mengimbangi data
2 Jika pada masa ini tiada data untuk dibaca apabila proses beroperasi io, benang disekat Memandangkan nio mengendalikan io pada saluran, ia tidak menyekat Apabila tiada data untuk dibaca dalam saluran, saluran boleh ditukar kepada proses io lain
3. Nio mempunyai pemilih untuk dipilih. Urutan boleh memilih berbilang saluran melalui pemilih, manakala io hanya boleh mengendalikan satu

Dibuat dengan tangan semata-mata, harap ia membantu anda

EOF

洪涛

Anggapkan senario berikut: Pada mesin 4 teras, terima permintaan rangkaian, proses logik perniagaan, dan kembalikan hasil pemprosesan kepada pelanggan adalah 10,000/s Semasa pemprosesan logik perniagaan, Terdapat operasi menulis fail, yang perlu disekat selama 5 saat, dengan mengandaikan bahawa penghantaran tidak memakan masa.

1. Gunakan pemprosesan BIO:

Disebabkan masa IO yang lama dalam pemprosesan logik perniagaan, utas pemprosesan akan disekat Dalam kes berbilang permintaan, satu permintaan akan menjana urutan untuk memproses perniagaan, jadi dalam masa 5 saat, 50,000 utas perlu wujud dalam. sistem , digunakan untuk mengendalikan logik perniagaan. CPU akan menggunakan kebanyakan sumbernya untuk mengendalikan penjadualan benang.

2. Gunakan pemprosesan NIO:
Operasi IO dalam NIO adalah tidak segerak dan tidak akan menyekat rangkaian logik perniagaan Dalam kes berbilang permintaan, 4 utas perniagaan dibuka dan satu utas menggunakan satu teras CPU boleh memproses logik perniagaan dengan kelajuan penuh. Untuk operasi IO dalam perniagaan, ia boleh diproses secara tak segerak dalam perkakasan, dan mesej dihantar ke CPU untuk pemprosesan perniagaan seterusnya apabila data sudah siap Kemudian hanya 4 utas diperlukan untuk memproses perniagaan dengan cekap, dan CPU hampir tidak terbiar. Tidak perlu menggunakan sumber dalam penjadualan benang.

刘奇

Sama ada IO atau NIO, ia adalah manifestasi model I/O rangkaian Linux. Adalah disyorkan untuk mempelajari model rangkaian Linux.

Ty80

1.nio melakukan pemetaan memori, menghapuskan satu salinan antara ruang pengguna dan ruang sistem
2.nio adalah tak segerak, tindak balas tercetus, tindak balas tidak menyekat, menggunakan sepenuhnya sumber sistem, terutamanya Ia adalah cpu

巴扎黑

<h1>Hey hei</h1>

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan