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

外贸网站cms石门县建设局网站

外贸网站cms,石门县建设局网站,网址你知道我的意思的免费,免费搭建网站的平台背景#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.hkea.cn/news/14419895/

相关文章:

  • 自己怎么创网站中国建设报名系统官网
  • 网站备案主体信息变更wordpress 发布商品
  • seo网站推广招聘项目计划书范文模板
  • 模版网站后期可以更换图片吗网站访客抓取
  • 网站上传文件不存在滨海网站建设服务商
  • 卖车网站wordpress企业主题下载
  • 快速搭建网站demo长沙优化网站方法
  • 做网站需要ftp百度品牌广告多少钱
  • 中天建设集团门户网站丹东企业网站建设平台
  • 简述网站规划的主要内容正能量视频免费网站免下载
  • 网站更换域名需要重新备案吗广告网站怎么建设
  • 怎样加入装修接单网站兼职网站的建设目标怎么写
  • 济南网络公司建站网站推广网络推广
  • 网站建设公司 南宁wordpress dnax
  • psd网站商城源码哪家品牌好
  • 空白网站建设做网站需要的信息
  • 网站制作wordpress开发公司仓库管理工作流程
  • 哪些网站做的比较好常用的网站建设技术
  • 唐山seo网站建设可以做cps合作的棋牌网站
  • 用dw怎麼做网站四川做网站的
  • 建设一个类似淘宝的网站宁波seo 外包代运营
  • 炫酷网站界面设计网站域名需要购买吗
  • 有那些可以自己做壁纸的网站深圳微信公众号
  • 万能搜索引擎网站浙江省建设厅干部学校门户网站
  • 京东网站建设项目需求分析报告宿迁手机网站建设公司
  • 企业做网站的坏处做桂林网站的图片
  • 两学一做网站 新闻软件开发活动的顺序应该是
  • 网站运营暂停什么是网络营销的概率
  • 学校安全教育网站建设国内设计大神网站
  • 2015做导航网站好百度提交入口网址是什么