作者realmeat (真肉)
看板java
标题Re: [分享] java nio performance tuning
时间Sat Oct 5 14:19:36 2013
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 114.24.13.31
: → dryman:加入Buffer後2.375s 10/04 10:21
: → bitlife:建议把转换整数部分去掉再比一次,这部分直觉占2秒的大部分 10/04 10:43
: 推 dryman:不过我的目标就是要用(够快)的速度载入整数啊XD 10/04 11:28
: → swpoker:thread? 10/04 11:28
: → bitlife:我的意思是如果实测结果是整数转换占绝大多数时间,那麽问 10/04 11:56
: → bitlife:题就不在於 java.io vs. java.nio, 而是java.io没有(扩充) 10/04 11:58
: → bitlife:够快的整数转换功能 10/04 12:00
: 嗯, 懂你的意思. Strategy 1是将文字转整数,会花些时间
: 补上 去除整数转换的数据
: Strategy 2 是没有整数转换的, 和Strategy 3一样, 都是直接取出成为int
: ※ 编辑: AI3767 来自: 111.248.52.147 (10/04 20:14)
: → bitlife:http://www.docjar.com/html/api/java/io/DataInputStream 10/04 21:00
: → bitlife:.java.html readInt() 是用<<来转换的,另外想到一件事,测 10/04 21:02
: → bitlife:试不同策略前,应该要清cache,因为策略3快的有点可疑 XD 10/04 21:03
: readInt()这个我比较倾向认为是还原, 而不是转换
: 不过, 为了慎重, 也再做了其它试验, strategy 2和3 改为read byte 的方式
: 甚至连assignment也没有了, 出来的数据如下
: S2: 1.966 秒; S3: 0.344秒 (修正, 原本0.14 秒是忘了加上回圈)
:
: 至於cache的问题, 我比较不担心, 因为测试是跑个几次, 结果也是没变
: 还有交叉执行, 以厘清是否有执行顺序的因素存在
: 另外, buffer的大小部份, 我改用资料笔数为大小, 取得最好的缓冲能力
: 结论都是一样的 XD
: ※ 编辑: AI3767 来自: 111.248.52.147 (10/04 23:13)
: → bitlife:看到这里,java.io在本例中所多出来的overhead大概就是1.8s 10/04 23:33
: → sbrhsieh:S2:1.x s, S3:0.1x s 都是有 OS 层面的 cache 10/04 23:46
: → sbrhsieh:改为 read byte 部分可以多作说明吗? 10/04 23:48
: 原本code是用 bb.asIntBuffer() 去取 int值
: 改成 回圈并由 bb.get() 取byte值
: 补充: 前个 S3 读byte的数据有误, 必须加上回圈读取, 抱歉 0rz
: ※ 编辑: AI3767 来自: 111.248.52.147 (10/05 00:44)
: → sbrhsieh:请问改 read byte 作法还有没有 compose int value 部分? 10/05 01:11
我来回应一下cache的问题好了
交叉连续跑10圈
这样比较准确
nio 422 ms
io 266 ms
nio 15 ms
io 250 ms
nio 16 ms
io 250 ms
nio 16 ms
io 234 ms
nio 16 ms
io 250 ms
nio 15 ms
io 250 ms
nio 0 ms
io 266 ms
nio 0 ms
io 250 ms
nio 15 ms
io 250 ms
nio 16 ms
io 250 ms
对象为超大档案 1.60 GB (1,724,283,840 位元组)
nio 24250 ms
io 28890 ms
nio 23375 ms
io 22172 ms
nio 23610 ms
io 31593 ms
nio 49750 ms
io 30875 ms
nio 26547 ms
io 38219 ms
nio 40906 ms
io 29985 ms
其实也没差多少了, 数据会飘应该是有其他应用程式在影响
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.23.135
1F:→ sbrhsieh:第二份数据看起来大有问题 10/05 15:22
2F:→ realmeat:第二份後面应该被其他应用程式影响到 10/05 17:32
3F:推 AI3767:是说 nio 和 io 的速度差不多吗@@? 10/05 19:49
4F:→ AI3767:我刚测了1.6g nio:io = 5.351:31.106 秒 = =" 10/05 20:08