当前位置: 首页 > news >正文

张家界网站建设app建德网站制作公司

张家界网站建设app,建德网站制作公司,厦门黄页,江门好的建站网站背景#xff1a; 今天在查找一个序列化和反序列化相关的问题时#xff0c;意外发现使用DataInputStream读取和ByteBuffer读取之间性能相差巨大#xff0c;本文就来记录下这两者在读取整数类型时的性能差异#xff0c;以便在平时使用的过程中引起注意 DataInputStream数据…背景 今天在查找一个序列化和反序列化相关的问题时意外发现使用DataInputStream读取和ByteBuffer读取之间性能相差巨大本文就来记录下这两者在读取整数类型时的性能差异以便在平时使用的过程中引起注意 DataInputStream数据读取 Vs ByteBuffer数据读取 我们会分别使用DataInputStream和ByteBuffer读取不同长度的字节数组分别测试读取Short,Int,Long三类整数然后分别看一下他们的性能 性能测试代码如下 package org.example.jmh.deserialize;import static java.util.concurrent.TimeUnit.MICROSECONDS; import static org.example.jmh.deserialize.DataUtil.createByteArray;import java.io.ByteArrayInputStream; import java.io.DataInput; import java.io.DataInputStream; import java.io.IOException; import java.nio.ByteBuffer;import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.infra.Blackhole;Warmup(iterations 2, time 2) Measurement(iterations 3, time 10) Fork(1) OutputTimeUnit(MICROSECONDS) public class ByteBufferVsByteArrayDataInputBenchmark {State(Scope.Benchmark)public static class ByteBufferBackedDataInputState {ByteBuffer buffer;DataInput dataInput;Param({8, 32, 64, 128})int size;byte[] data;public void createData() {this.data createByteArray(size);}Setup(Level.Trial)public void init() {createData();this.buffer ByteBuffer.wrap(data);this.dataInput new BufferDataInput(buffer);}void reset() {buffer.position(0);}}State(Scope.Benchmark)public static class StreamBackedDataInpuState {ByteArrayInputStream bis;DataInput dataInput;Param({8, 32, 64, 128})int size;byte[] data;public void createData() {this.data createByteArray(size);}Setup(Level.Trial)public void init() {createData();this.bis new ByteArrayInputStream(data);this.dataInput new DataInputStream(bis);}void reset() {bis.reset();}}Benchmarkpublic void streamBackedDataInputReadShort(StreamBackedDataInpuState state, Blackhole bh) throws IOException {DataInput input state.dataInput;int size state.size;int pos 0;while (pos size) {bh.consume(input.readShort());pos 2;}state.reset();}Benchmarkpublic void bufferBackedDataInputReadShort(ByteBufferBackedDataInputState state, Blackhole bh) throws IOException {DataInput input state.dataInput;int size state.size;int pos 0;while (pos size) {bh.consume(input.readShort());pos 2;}state.reset();}Benchmarkpublic void streamBackedDataInputReadInt(StreamBackedDataInpuState state, Blackhole bh) throws IOException {DataInput input state.dataInput;int size state.size;int pos 0;while (pos size) {bh.consume(input.readInt());pos 4;}state.reset();}Benchmarkpublic void bufferBackedDataInputReadInt(ByteBufferBackedDataInputState state, Blackhole bh) throws IOException {DataInput input state.dataInput;int size state.size;int pos 0;while (pos size) {bh.consume(input.readInt());pos 4;}state.reset();}Benchmarkpublic void streamBackedDataInputReadLong(StreamBackedDataInpuState state, Blackhole bh) throws IOException {DataInput input state.dataInput;int size state.size;int pos 0;while (pos size) {bh.consume(input.readLong());pos 8;}state.reset();}Benchmarkpublic void bufferBackedDataInputReadLong(ByteBufferBackedDataInputState state, Blackhole bh) throws IOException {DataInput input state.dataInput;int size state.size;int pos 0;while (pos size) {bh.consume(input.readLong());pos 8;}state.reset();}public static class BufferDataInput implements DataInput {private final ByteBuffer data;public BufferDataInput(ByteBuffer data) {this.data data;}Overridepublic void readFully(byte[] bytes) {}Overridepublic void readFully(byte[] bytes, int i, int i1) {}Overridepublic int skipBytes(int i) {data.position(data.position() i);return data.position();}Overridepublic boolean readBoolean() {return data.get() ! 0;}Overridepublic byte readByte() {return data.get();}Overridepublic int readUnsignedByte() {return data.get() 0xFF;}Overridepublic short readShort() {return data.getShort();}Overridepublic int readUnsignedShort() {return data.getShort() 0xffff;}Overridepublic char readChar() {return data.getChar();}Overridepublic int readInt() {return data.getInt();}Overridepublic long readLong() {return data.getLong();}Overridepublic float readFloat() {return data.getFloat();}Overridepublic double readDouble() {return data.getDouble();}Overridepublic String readLine() {return null;}Overridepublic String readUTF() {return null;}}} jmh的测试结果 从结果可以看出不论是读取ShortInt还是LongByteBuffer都比DataInputStream有很大的性能优势大概3-4倍的差异那么你知道造成这种性能差距的原因是什么吗留个悬念
http://www.tj-hxxt.cn/news/225548.html

相关文章:

  • 济南网站建设公司选济南网络佛山微网站推广哪家专业
  • 网站织梦模板jsp 网站开发教程
  • 快速搭建网站的工具wordpress主题的作用
  • 千博企业网站管理系统旗舰版装修工人找活平台
  • 自己做的网站可以卖简述网站开发基本流程图
  • pc端手机网站 viewport 自适应好玩的网页游戏排行榜电脑
  • 什么软件是做网站的wordpress首页不显示全文
  • 莱芜市网站建设设计品牌设计logo vi设计
  • 智能网站建设设计引流推广
  • 一个网站有多个域名大连免费营销型建站网络推广
  • 门户网站的优点seo关键词找29火星软件
  • 讯展网站优化推广吴川房产网
  • 网站主页特效欣赏一个网站备案两个域名吗
  • 网站建设分类wordpress缓存方法 张戈
  • 哪个网站可以做计算机二级的题wordpress 媒体文件库
  • 在哪个网站做ppt模板赚钱优化营商环境指什么
  • 专门做黄漫的网站建立一个购物网站平台费用
  • 网站服务器租用还是自买东莞市疾控中心官网
  • 营口电商平台网站建设wordpress指定分类文章
  • 模板网站可以做优化新人怎么做跨境电商
  • 网站开发款计入什么科目网站开发 python 工具
  • 大唐网站首页广东建设工程备案网站
  • 机械网站案例网站开发课设个人总结
  • 珠海网站建设熊掌号怎样免费做一个网站
  • 石家庄网站编辑郑州 发布会
  • 自由型网站网站建设好弄不好弄
  • 58同城 网站建设 推广排名教务系统管理
  • 建设企业网站需要使用哪些技术网站建设方案行业
  • 怎么可以联系到网站开发者网站备案产品信息错误
  • 网站建设与运营市场开拓方案大连三丰建设集团公司网站