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

电子商务商城网站建设怎么把网站排名排上去

电子商务商城网站建设,怎么把网站排名排上去,免费网站建设开发,h5源码下载背景: 今天在查找一个序列化和反序列化相关的问题时,意外发现使用DataInputStream读取和ByteBuffer读取之间性能相差巨大,本文就来记录下这两者在读取整数类型时的性能差异,以便在平时使用的过程中引起注意 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的测试结果:
在这里插入图片描述
从结果可以看出,不论是读取Short,Int还是Long,ByteBuffer都比DataInputStream有很大的性能优势,大概3-4倍的差异,那么你知道造成这种性能差距的原因是什么吗,留个悬念

http://www.tj-hxxt.cn/news/125204.html

相关文章:

  • 做网站编程的待遇关联词有哪些 全部
  • 怎么做网站页面营业推广是什么
  • 可以做简单小活动的网站营销策划公司名称
  • 上海专业做网站的公司有哪些seo优化关键词分类
  • 武汉个人做网站百度浏览器网址
  • 网页设计与网站建设指标点台州做优化
  • 学会python做网站外贸软件
  • 青岛企业做网站网站设计制作教程
  • 个人域名可以做公司网站么最近热搜新闻事件
  • 柳州微网站开发市场调研报告范文模板word
  • 网站的建设服务平台seo优化平台
  • 有什么网站是做批发的温州seo博客
  • 国家建设标准网站推动防控措施持续优化
  • 网站建设 asp 武汉网站外链平台
  • 示范学校建设专题网站安徽百度推广怎么做
  • 建设网站制作百度网盘官网入口
  • 网站密码如何找回武汉seo招聘信息
  • 像乐视做硬件的视频网站广州百度关键词排名
  • 国家 住房城乡建设信用 网站推广优化网站
  • 专业的移动网站建设公网络推广方法有哪些
  • 制作自己的网站需要什么软件好seo管理系统培训
  • 大业推广网站网络安全有名的培训学校
  • 网站制作完成今日国内新闻大事件
  • 商务型网站模板浏览器2345网址导航下载安装
  • 网站浮动窗口代码php网络推广员具体做什么的
  • 网站页面链接结构电商运营培训班
  • 个人域名怎么做网站广州seo关键词优化是什么
  • iis可以做php网站吗友情链接的作用
  • 微信网站系统百度搜索关键词排名人工优化
  • 柳州做网站的企业交换友情链接推广法