java IO、NIO bio是流式的,看源码你会发现,最终都调用read()方法,也就是一个字节一个字节地读;nio是块式的,一块一块地读写。操作系统的文件系统是块式的,所以一般来说,nio更快。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没区别。io/nio的主要区别在异步和同步的调用,性能差异主要在多连接的处理上。 没区别。io/nio的主要区别在异步和同步的调用,性能差异主要在多连接的处理上。没区别的判定太武断了。从理论上来说,传统的io用的是设备中断方式,读写数据是以「字」为单位的(注意是字,不是字节),一般来说64位系统,中断一次也就能读1个字;如果使用nio方式,Java会尽量使用贴近操作系统的,更优化的方式,比如DMA方式,或者通道方式,去读写数据,这样的话,处理至少是以块为单位的,并且CPU基本上处于放权的状态,直到数据全部加载进内存,CPU才会去要回控制权。所以在现代操作系统中,一般NIO都会比IO快。 没区别。io/nio的主要区别在异步和同步的调用,性能差异主要在多连接的处理上。没区别的判定太武断了。从理论上来说,传统的io用的是设备中断方式,读写数据是以「字」为单位的(注意是字,不是字节),一般来说64位系统,中断一次也就能读1个字;如果使用nio方式,Java会尽量使用贴近操作系统的,更优化的方式,比如DMA方式,或者通道方式,去读写数据,这样的话,处理至少是以块为单位的,并且CPU基本上处于放权的状态,直到数据全部加载进内存,CPU才会去要回控制权。所以在现代操作系统中,一般NIO都会比IO快。个人认为,你写的这段还需要再回炉重新学习一下相关的理论知识,尤其是你说的那个一般来说那一句话。实际上来说,程序的效率更多取决于程序员的水平和实际的业务场景。具体用不用nio,看是不是有这个必要。 没区别。io/nio的主要区别在异步和同步的调用,性能差异主要在多连接的处理上。没区别的判定太武断了。从理论上来说,传统的io用的是设备中断方式,读写数据是以「字」为单位的(注意是字,不是字节),一般来说64位系统,中断一次也就能读1个字;如果使用nio方式,Java会尽量使用贴近操作系统的,更优化的方式,比如DMA方式,或者通道方式,去读写数据,这样的话,处理至少是以块为单位的,并且CPU基本上处于放权的状态,直到数据全部加载进内存,CPU才会去要回控制权。所以在现代操作系统中,一般NIO都会比IO快。个人认为,你写的这段还需要再回炉重新学习一下相关的理论知识,尤其是你说的那个一般来说那一句话。实际上来说,程序的效率更多取决于程序员的水平和实际的业务场景。具体用不用nio,看是不是有这个必要。「一般来说」的说法,是因为现代操作系统大多都提供DMA和通道方式去读写块式设备,但是不排除某些操作系统不支持,或者硬件不支持。而且Java也只是说尽可能贴近操作系统的实现去做NIO,它也不保证。所以我使用了「一般来说」这个用词。还有,不要动不动就让人「回炉学习」,你至少得贴一个说得过去的理由吧。实际上这部分,你在转移话题。就题主给的问题来说,NIO确实比IO有优势,尤其是处理大块数据的时候。 抱歉,确实错了。一次中断,确实不是一个字,但是CPU读取一次数据是一个字。一次中断,一般是一个磁盘缓冲区塞满。但CPU读磁盘缓冲区中的数据是一个字一个字读的,而DMA传输数据一次就是一个磁盘缓冲区。还是NIO快。 抱歉,确实错了。一次中断,确实不是一个字,但是CPU读取一次数据是一个字。一次中断,一般是一个磁盘缓冲区塞满。但CPU读磁盘缓冲区中的数据是一个字一个字读的,而DMA传输数据一次就是一个磁盘缓冲区。还是NIO快。其实,我想告诉你的事情是,nio相对于io来说,得到最关键的提升还是异步IO在网络处理性能上的。而中断和CPU读数据,是两件事。 看具体的应用场景吧。主要是区别是一个是异步IO(NIO),一个是同步IO(传统IO)。至于是流方式比较快还是块方式比较快,这个没有测试过,普遍的理论都认为是块方式比较快。在读取文件方面,小文件用传统IO,大文件用NIO。在处理网络连接方面,优先选择NIO。 对性能有点要求的服务器侧的网络,必须用NIO。对网络连接数量上没有要求的客户端程序,建议还是IO,开发调试起来比较快一点。 求类似window画板的源代码 急等!!通过FTPClient下载文件看不到文件。 请推荐一本关于PowerDesinger的中文书(可以是电子书) 继承问题 如何将JPG打包进exe,然后在程序里正确使用。 改了jre的源代码,jre不能用了怎么办啊 jb7各位用了吗?难道还要下载Borland Enterprise APPServe Edition? 关于数组初始化的问题! UI小问题,可我就是不知道怎么实现,或许您知道…… 寻求 MD5 java的源程序 请问JAVA如何编写多线程共享一个变量?注意是不同的构造函数做出的线程。 新手小问题求解答
没区别。io/nio的主要区别在异步和同步的调用,性能差异主要在多连接的处理上。
没区别。io/nio的主要区别在异步和同步的调用,性能差异主要在多连接的处理上。没区别的判定太武断了。从理论上来说,传统的io用的是设备中断方式,读写数据是以「字」为单位的(注意是字,不是字节),一般来说64位系统,中断一次也就能读1个字;如果使用nio方式,Java会尽量使用贴近操作系统的,更优化的方式,比如DMA方式,或者通道方式,去读写数据,这样的话,处理至少是以块为单位的,并且CPU基本上处于放权的状态,直到数据全部加载进内存,CPU才会去要回控制权。所以在现代操作系统中,一般NIO都会比IO快。
没区别。io/nio的主要区别在异步和同步的调用,性能差异主要在多连接的处理上。没区别的判定太武断了。从理论上来说,传统的io用的是设备中断方式,读写数据是以「字」为单位的(注意是字,不是字节),一般来说64位系统,中断一次也就能读1个字;如果使用nio方式,Java会尽量使用贴近操作系统的,更优化的方式,比如DMA方式,或者通道方式,去读写数据,这样的话,处理至少是以块为单位的,并且CPU基本上处于放权的状态,直到数据全部加载进内存,CPU才会去要回控制权。所以在现代操作系统中,一般NIO都会比IO快。
个人认为,你写的这段还需要再回炉重新学习一下相关的理论知识,尤其是你说的那个一般来说那一句话。实际上来说,程序的效率更多取决于程序员的水平和实际的业务场景。具体用不用nio,看是不是有这个必要。
没区别。io/nio的主要区别在异步和同步的调用,性能差异主要在多连接的处理上。没区别的判定太武断了。从理论上来说,传统的io用的是设备中断方式,读写数据是以「字」为单位的(注意是字,不是字节),一般来说64位系统,中断一次也就能读1个字;如果使用nio方式,Java会尽量使用贴近操作系统的,更优化的方式,比如DMA方式,或者通道方式,去读写数据,这样的话,处理至少是以块为单位的,并且CPU基本上处于放权的状态,直到数据全部加载进内存,CPU才会去要回控制权。所以在现代操作系统中,一般NIO都会比IO快。
个人认为,你写的这段还需要再回炉重新学习一下相关的理论知识,尤其是你说的那个一般来说那一句话。实际上来说,程序的效率更多取决于程序员的水平和实际的业务场景。具体用不用nio,看是不是有这个必要。「一般来说」的说法,是因为现代操作系统大多都提供DMA和通道方式去读写块式设备,但是不排除某些操作系统不支持,或者硬件不支持。而且Java也只是说尽可能贴近操作系统的实现去做NIO,它也不保证。所以我使用了「一般来说」这个用词。还有,不要动不动就让人「回炉学习」,你至少得贴一个说得过去的理由吧。实际上这部分,你在转移话题。就题主给的问题来说,NIO确实比IO有优势,尤其是处理大块数据的时候。
抱歉,确实错了。一次中断,确实不是一个字,但是CPU读取一次数据是一个字。
一次中断,一般是一个磁盘缓冲区塞满。
但CPU读磁盘缓冲区中的数据是一个字一个字读的,而DMA传输数据一次就是一个磁盘缓冲区。
还是NIO快。
抱歉,确实错了。一次中断,确实不是一个字,但是CPU读取一次数据是一个字。
一次中断,一般是一个磁盘缓冲区塞满。
但CPU读磁盘缓冲区中的数据是一个字一个字读的,而DMA传输数据一次就是一个磁盘缓冲区。
还是NIO快。
其实,我想告诉你的事情是,nio相对于io来说,得到最关键的提升还是异步IO在网络处理性能上的。而中断和CPU读数据,是两件事。
至于是流方式比较快还是块方式比较快,这个没有测试过,普遍的理论都认为是块方式比较快。
在读取文件方面,小文件用传统IO,大文件用NIO。在处理网络连接方面,优先选择NIO。
对性能有点要求的服务器侧的网络,必须用NIO。对网络连接数量上没有要求的客户端程序,建议还是IO,开发调试起来比较快一点。