宏大建设集团有限公司网站赣州网上问政

pingmian/2026/1/24 6:03:12/文章来源:
宏大建设集团有限公司网站,赣州网上问政,苏州吴江区建设局网站,洛阳网红打卡地许多应用程序将一系列事件记录到基于文件的存储中#xff0c;以供以后使用。 从日志记录和审核#xff0c;直到在事件源设计或其紧密相关的CQRS中保留事务重做日志#xff0c;这都可以是任何东西。 Java具有多种方法#xff0c;可以通过这些方法将文件顺序写入或重新读取。… 许多应用程序将一系列事件记录到基于文件的存储中以供以后使用。 从日志记录和审核直到在事件源设计或其紧密相关的CQRS中保留事务重做日志这都可以是任何东西。 Java具有多种方法可以通过这些方法将文件顺序写入或重新读取。 本文探讨了其中一些机制以了解其性能特征。 对于本文的范围我将使用预分配的文件因为我想关注性能。 不断扩展文件会带来很大的性能开销并给应用程序增加抖动从而导致高度可变的延迟。 “为什么预分配的文件性能更好”我听到您问。 好吧在磁盘上文件是由一系列包含数据的块/页面组成的。 首先重要的是这些块是连续的以提供快速的顺序访问。 其次必须分配元数据来描述此文件在磁盘上并保存在文件系统中。 典型的大文件将分配许多“间接”块以描述包含组成该元数据一部分的文件内容的数据块链。 我将其留给读者或以后的文章来练习以探讨不预先分配数据文件对性能的影响。 如果您使用过数据库则可能已经注意到它预先分配了所需的文件。 考试 我想尝试2种文件大小。 一个足够大可以测试顺序访问但可以轻松放入文件系统缓存中另一个更大可以使缓存子系统被迫退出页面以便可以加载新页面。 对于这两种情况我将分别使用400MB和8GB。 我还将遍历文件多次以显示预热和预热特性。 我将测试4种顺序写入和读取文件的方式 使用页面大小的普通字节[]的RandomAccessFile 。 缓冲的FileInputStream和FileOutputStream 。 具有页面大小的ByteBuffer的NIO FileChannel 。 使用NIO和直接MappedByteBuffer映射文件的内存。 这些测试在具有8GB RAM的2.0Ghz Sandybridge CPU具有ext4文件系统的Fedora Core 15 64位Linux上的Intel 320 SSD和Oracle JDK 1.6.0_30上运行。 编码 import java.io.*; import java.nio.ByteBuffer; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel;import static java.lang.Integer.MAX_VALUE; import static java.lang.System.out; import static java.nio.channels.FileChannel.MapMode.READ_ONLY; import static java.nio.channels.FileChannel.MapMode.READ_WRITE;public final class TestSequentialIoPerf {public static final int PAGE_SIZE 1024 * 4;public static final long FILE_SIZE PAGE_SIZE * 2000L * 1000L;public static final String FILE_NAME test.dat;public static final byte[] BLANK_PAGE new byte[PAGE_SIZE];public static void main(final String[] arg) throws Exception{preallocateTestFile(FILE_NAME);for (final PerfTestCase testCase : testCases){for (int i 0; i 5; i){System.gc();long writeDurationMs testCase.test(PerfTestCase.Type.WRITE,FILE_NAME);System.gc();long readDurationMs testCase.test(PerfTestCase.Type.READ,FILE_NAME);long bytesReadPerSec (FILE_SIZE * 1000L) / readDurationMs;long bytesWrittenPerSec (FILE_SIZE * 1000L) / writeDurationMs;out.format(%s\twrite%,d\tread%,d bytes/sec\n,testCase.getName(),bytesWrittenPerSec, bytesReadPerSec);}}deleteFile(FILE_NAME);}private static void preallocateTestFile(final String fileName)throws Exception{RandomAccessFile file new RandomAccessFile(fileName, rw);for (long i 0; i FILE_SIZE; i PAGE_SIZE){file.write(BLANK_PAGE, 0, PAGE_SIZE);}file.close();}private static void deleteFile(final String testFileName) throws Exception{File file new File(testFileName);if (!file.delete()){out.println(Failed to delete test file testFileName);out.println(Windows does not allow mapped files to be deleted.);}}public abstract static class PerfTestCase{public enum Type { READ, WRITE }private final String name;private int checkSum;public PerfTestCase(final String name){this.name name;}public String getName(){return name;}public long test(final Type type, final String fileName){long start System.currentTimeMillis();try{switch (type){case WRITE:{checkSum testWrite(fileName);break;}case READ:{final int checkSum testRead(fileName);if (checkSum ! this.checkSum){final String msg getName() expected this.checkSum got checkSum;throw new IllegalStateException(msg);}break;}}}catch (Exception ex){ex.printStackTrace();}return System.currentTimeMillis() - start;}public abstract int testWrite(final String fileName) throws Exception;public abstract int testRead(final String fileName) throws Exception;}private static PerfTestCase[] testCases {new PerfTestCase(RandomAccessFile){public int testWrite(final String fileName) throws Exception{RandomAccessFile file new RandomAccessFile(fileName, rw);final byte[] buffer new byte[PAGE_SIZE];int pos 0;int checkSum 0;for (long i 0; i FILE_SIZE; i){byte b (byte)i;checkSum b;buffer[pos] b;if (PAGE_SIZE pos){file.write(buffer, 0, PAGE_SIZE);pos 0;}}file.close();return checkSum;}public int testRead(final String fileName) throws Exception{RandomAccessFile file new RandomAccessFile(fileName, r);final byte[] buffer new byte[PAGE_SIZE];int checkSum 0;int bytesRead;while (-1 ! (bytesRead file.read(buffer))){for (int i 0; i bytesRead; i){checkSum buffer[i];}}file.close();return checkSum;}},new PerfTestCase(BufferedStreamFile){public int testWrite(final String fileName) throws Exception{int checkSum 0;OutputStream out new BufferedOutputStream(new FileOutputStream(fileName));for (long i 0; i FILE_SIZE; i){byte b (byte)i;checkSum b;out.write(b);}out.close();return checkSum;}public int testRead(final String fileName) throws Exception{int checkSum 0;InputStream in new BufferedInputStream(new FileInputStream(fileName));int b;while (-1 ! (b in.read())){checkSum (byte)b;}in.close();return checkSum;}},new PerfTestCase(BufferedChannelFile){public int testWrite(final String fileName) throws Exception{FileChannel channel new RandomAccessFile(fileName, rw).getChannel();ByteBuffer buffer ByteBuffer.allocate(PAGE_SIZE);int checkSum 0;for (long i 0; i FILE_SIZE; i){byte b (byte)i;checkSum b;buffer.put(b);if (!buffer.hasRemaining()){buffer.flip();channel.write(buffer);buffer.clear();}}channel.close();return checkSum;}public int testRead(final String fileName) throws Exception{FileChannel channel new RandomAccessFile(fileName, rw).getChannel();ByteBuffer buffer ByteBuffer.allocate(PAGE_SIZE);int checkSum 0;while (-1 ! (channel.read(buffer))){buffer.flip();while (buffer.hasRemaining()){checkSum buffer.get();}buffer.clear();}return checkSum;}},new PerfTestCase(MemoryMappedFile){public int testWrite(final String fileName) throws Exception{FileChannel channel new RandomAccessFile(fileName, rw).getChannel();MappedByteBuffer buffer channel.map(READ_WRITE, 0,Math.min(channel.size(), MAX_VALUE));int checkSum 0;for (long i 0; i FILE_SIZE; i){if (!buffer.hasRemaining()){buffer channel.map(READ_WRITE, i,Math.min(channel.size() - i , MAX_VALUE));}byte b (byte)i;checkSum b;buffer.put(b);}channel.close();return checkSum;}public int testRead(final String fileName) throws Exception{FileChannel channel new RandomAccessFile(fileName, rw).getChannel();MappedByteBuffer buffer channel.map(READ_ONLY, 0,Math.min(channel.size(), MAX_VALUE));int checkSum 0;for (long i 0; i FILE_SIZE; i){if (!buffer.hasRemaining()){buffer channel.map(READ_WRITE, i,Math.min(channel.size() - i , MAX_VALUE));}checkSum buffer.get();}channel.close();return checkSum;}},}; } 结果 400MB file RandomAccessFile write294,041,636 read1,494,890,510 bytes/sec BufferedStreamFile写入 98,178,331读取 286,433,566字节/秒 BufferedStreamFile写入 100,244,738读取 288,857,545字节/秒 BufferedStreamFile写入 82,948,562读取 154,100,827字节/秒 BufferedStreamFile写入 108,503,311读取 153,869,271字节/秒 BufferedStreamFile写入 113,055,478读取 152,608,047字节/秒 BufferedChannelFile写入 228,443,948读取 356,173,913字节/秒 BufferedChannelFile写入 265,629,053读取 374,063,926字节/秒 BufferedChannelFile写 223,825,136读 1,539,849,624字节/秒BufferedChannelFile写 232,992,036读 1,539,849,624字节/秒BufferedChannelFile写 212,779,220读 1,534,082,397字节/秒 MemoryMappedFile写入 300,955,180读取 305,899,925字节/秒 MemoryMappedFile写入 313,149,847读取 310,538,286字节/秒 MemoryMappedFile写入 326,374,501读取 303,857,566字节/秒 MemoryMappedFile写入 327,680,000读取 304,535,315字节/秒 MemoryMappedFile写入 326895450读取 303632320字节/秒 8GB文件 RandomAccessFile写入 167,402,321读取 251,922,012字节/秒 RandomAccessFile写入 193,934,802读取 257,052,307字节/秒 RandomAccessFile写入 192,948,159读取 248,460,768字节/秒 RandomAccessFile写入 191,814,180读取 245,225,408字节/秒 RandomAccessFile写入 190,635,762读取 275,315,073字节/秒 BufferedStreamFile写入 154,823,102读取 248,355,313字节/秒 BufferedStreamFile写入 152,083,913读取 253,418,301字节/秒 BufferedStreamFile写入 133,099,369读取 146,056,197字节/秒 BufferedStreamFile写入 131,065,708读取 146,217,827字节/秒 BufferedStreamFile写入 132694052读取 148116004字节/秒 BufferedChannelFile写入 186703740读取 215075218字节/秒 BufferedChannelFile写入 190,591,410读取 211,030,680字节/秒BufferedChannelFile写入 187,220,038读取 223,087,606字节/秒 BufferedChannelFile写入 191,585,397读取 221,297,747字节/秒 BufferedChannelFile写入 192,653,214读取 211,789,038字节/秒 MemoryMappedFile写入 123,023,322读取 231,530,156字节/秒 MemoryMappedFile写入 121,961,023读取 230,403,600字节/秒 MemoryMappedFile写入 123,317,778读取 229,899,250字节/秒 MemoryMappedFile写入 121,472,738读取 231,739,745字节/秒 MemoryMappedFile写入 120,362,615读取 231,190,382字节/秒 分析 多年来我一直是直接使用RandomAccessFile的忠实拥护者 因为它提供了控制和可预测的执行。 从性能的角度来看我从来没有发现使用缓冲流会很有用而且情况似乎仍然如此。 在最近的测试中我发现使用NIO FileChannel和ByteBuffer的性能要好得多。 使用Java 7此编程方法的灵活性已得到改善可以使用SeekableByteChannel进行随机访问。 似乎在某些情况下读取RandomAccessFile和NIO可以很好地使Memory Mapped文件赢得写操作。 我看到这些结果因平台而异。 文件系统操作系统存储设备和可用内存都会产生重大影响。 在某些情况下我看到内存映射文件的性能明显优于其他文件但这需要在您的平台上进行测试因为您的行程可能会有所不同…… 推送最大吞吐量时应特别注意使用内存映射的大文件。 我经常发现操作系统可能由于虚拟内存子系统上的压力而变得无响应。 结论 从Java执行顺序文件IO的不同方法在性能上存在显着差异。 并非所有方法都遥遥相等。 对于大多数IO我发现使用ByteBuffers和Channels是IO库中最优化的部分。 如果缓冲流是您的IO库的选择那么值得进行分支并熟悉Channel和Buffer的实现甚至可以使用旧的RandomAccessFile进行回退。 参考 Mechanical Sympathy博客上的JCG合作伙伴 Martin Thompson提供的Java顺序IO性能 。 翻译自: https://www.javacodegeeks.com/2012/07/java-sequential-io-performance.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西安网站制作哪家好外贸 网站推广

大家好,我是Z哥。最近在工作中学习到一个我觉得很有价值的小工具,在这里与大家分享一下。这个小工具需要自己稍作开发,并不存在什么第三方的现成工具供你使用,因为这个工具的核心关键是「数据」,而「数据」这个东西对于…

网站设计与制作一般步骤长白山网站学做管理平台

目录 文章目录 目录本节实战1、安全概述2、证书签发流程1.签发证书2.身份认证 3、认证1.对等认证a.默认的宽容模式b.全局严格 mTLS 模式c.命名空间级别策略d.为每个工作负载启用双向 TLS 2.请求认证a.JWK 与 JWKS 概述b.配置 JWT 终端用户认证c.设置强制认证规则 关于我最后 本…

电商平台网站模板prizm viewer wordpress

Java"对象序列化":是指将实现了Serializable接口的对象转换成一组byte,日后要用这个对象时候,可以根据byte数据恢复出来,并据此重新构建那个对象。 优点: 1、JavaBean类基本都要求实现了Serializable接口&…

大理建设学校官方网站网站中加入地图

--注意:因使用了sys.wait()所有api需要在协程中使用 -- 用法实例 PROJECT "ESP32C3_TM1650" VERSION "1.0.0" _G.sys require("sys") local tm1650 require "tm1650"-- 拆分整数,并把最低位数存放在数组最大索引处 loc…

正规网站建设找哪家做网站刷东西

背景 在flink中对两个流进行connect之后进行出处理的场景很常见,我们本文就以书中的一个例子为例说明下实现一个CoProcessFunction的一些要点 实现CoProcessFunction的一些要点 这个例子举例的是当收到某个传感器放行的控制消息时,从传感器传来的温度…

网站快速排名案例微博评论箱 wordpress

经典网站: Stack Overflow:作为全球最大的程序员问答社区,Stack Overflow 汇聚了大量的编程问题和解答,为程序员提供了极大的帮助。GitHub:全球最大的开源代码托管平台,程序员可以在上面共享自己的项目代码…

天津做网站哪个公司好大连开发区人才网

第一题: 输出月份英文名 设计思路: 1:看题目:主函数与函数声明,知道它要你干什么2:理解与分析:在main中,给你一个月份数字n,要求你通过调用函数char *getmonth,来判断:若…

什么叫网站开发网页视频下载器app免费

简介: 本届大会以“前沿 探索 想象力”为主题,与业界同仁、合作伙伴共同打造一场数字时代的云上相聚。其中,边缘计算技术领域因5G快速发展而备受关注,阿里云边缘云专场吸引了数百位参会嘉宾驻足。 于10月21日上午举办的“边缘云应…

深圳龙华建网站公司wordpress 注册用户列表

有没有一起拼用银行卡的,取钱的时候我用,存钱的时候你用 1、相同的树 难度等级:⭐ 直达链接:相同的树 2、单值二叉树 难度等级:⭐ 直达链接:单值二叉树 3、对称二叉树 难度等级:⭐⭐ 直达…

制作论坛类网站模板洛阳网站优化

1. Spring 是如何解决循环依赖的? Spring 通过一系列复杂的机制来解决循环依赖问题,特别是在单例作用域的 Bean 之间。以下是一些关键点和 Spring 如何处理它们: 构造函数循环依赖: Spring 容器无法解决构造函数注入导致的循环依赖。这是因…

做网站泊头net网站开发是什么

目录 &#x1f4a1;题目描述 &#x1f4a1;双指针解法 &#x1f4a1;单调栈解法 &#x1f4a1;题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 提示&#xff1a; n height.length1 < n…

网站建设的成本主要有哪几项襄阳专业网站建设公司

关于标准帧和扩展帧的区别 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、扩展帧和标准帧的区别1.引入库 总结 前言 最近看关于DBC的报文解析&#xff0c;关于标准真和扩展帧有了更为明确的界定&#xf…

网站开发时间安排全球包装设计网

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 所有开发人员都认为自己写的代码完全能让人看懂&#xff0c;然而&#xff0c;他们却无法解密彼此的代码(更不用说维护代码了)…

网站功能插件ui界面设计软件

一. dex文件头(1) magic value在DexFile.c dexFileParse函数中 会先检查magic opt啥是magic opt呢? 我们刚刚从cache目录拷贝出来的那个前面的dey 036就是magic opt在源码中会先解析magic opt,然后重设dexfile指针重设magic opt指针后开始解析magic value这 8 个 字节一般是…

seo站长助手免费做效果图的网站

1 概述 同时聚合两条3GPP接入链路&#xff0c;其中一条为非地面网络&#xff0c;可以提供以下5G业务使能&#xff0c;尤其适用于带宽有限或接入链路不可靠的服务不足地区:   -扩展流动宽频   -超可靠的服务通信 如技术报告38.821所述&#xff0c;若干服务场景(例如在偏远地…

centos安装 wordpress环境网站速度优化方案

判断题 1. 三方组件是开发者在系统能力的基础上进行了一层具体功能的封装&#xff0c;对其能力进行拓展的工具 正确(True) 回答正确 2. 可以通过ohpm uninstall 指令下载指定的三方库 错误(False) 回答正确 3. lottie使用loadAnimation方法加载动画。 正确(True) 回答正…

吉林省建设厅网站评职称系统做网站比较好的

Redis代替session 实现登录流程 如果使用String&#xff0c;他的value&#xff0c;用多占用一点空间&#xff0c;如果使用哈希&#xff0c;则他的value中只会存储他数据本身&#xff0c;如果不是特别在意内存&#xff0c;其实使用String就可以 设计key的具体细节 在设计这个k…

工程建设指挥部网站小程序从哪里登录

上次已将ffmpeg的动态库编译出来了&#xff0c;并且使用了ffmpeg的转码功能&#xff0c;成功将mp4格式视频转化为yuv视频&#xff0c;这篇文章基于上次测试的demo&#xff0c;使用surfaceview显示解码完成的像素数据 布局设置和权限添加 布局 <FrameLayout xmlns:android&qu…

郑州个人网站制作公司做的比较好的设计公司网站

随着科技进步&#xff0c;人类对大脑的认识不断深入。2004年脑的大尺度网络论述初步形成&#xff0c;2005年脑连接组学的概念首次提出&#xff0c;到2017年Sporns等在Nature neuroscience撰文系统论述&#xff0c;并提出了Network neuroscience的概念。与此同时&#xff0c;欧美…

服装企业营销网站建设养老保险怎么买最划算

stl格式&#xff0c;一般是用来3D打印用的文件&#xff0c;这种模型一般很小&#xff0c;经常做来做一些DIY的配件&#xff0c;如下图&#xff0c;一共有七八个模型&#xff0c;3D打印机把每个模型实体打出来后&#xff0c;就可以给小朋友组装当智益玩具玩了&#xff0c;我们把…