使用直接内存时可以更快
总览
使用直接内存不能保证提高性能。 考虑到它增加了复杂性,除非有充分的理由使用它,否则应避免使用它。
塞尔吉奥·奥利维拉(Sergio Oliveira Jr)的这篇出色文章表明,这不仅仅是使用直接内存来提高性能的问题, 哪个更快:Java堆还是本机内存?
当您有大量数据和/或必须对这些数据执行一些IO时,直接内存和内存映射文件可以提供帮助。
时间序列数据。
时间序列数据往往具有大量条目,并且需要IO来加载和存储数据。 这使其成为内存映射文件和直接内存的理想选择。
我在这里提供了一个例子。 main和测试 ,对常规对象和内存映射文件执行相同的操作。 注意:我不建议访问对象的速度很慢,但是使用对象的开销是个问题。 例如,加载,创建,对象标题的大小,垃圾回收和保存对象。
该测试将时间和时间两列(买入价和卖价(以int值标准化))加载到时间序列数据中,该数据用于计算和保存简单的中间价格基点移动。 该测试执行一个GC,以包括管理所涉及对象的开销。
存储 | 百万 | 千万 | 3000万 | 1亿 | 2.5亿 |
---|---|---|---|---|---|
对象 | 0.55秒 | 4.4秒 | 16.7秒 | 86.7秒 | 225秒 |
地图 | 0.056秒 | 0.46秒 | 1.3秒 | 4.5秒 | 11秒 |
完整结果
对于较小的数据集,内存映射数据不仅速度快10倍,对于较大的数据量,它的伸缩性也更好,因为
- 内存映射的数据一旦映射到内存中就可以使用
- 它仅创建少量对象,几乎没有堆脚印,从而减少了GC时间。
- 您可以根据需要将其安排在内存中,因为每行没有对象,因此可以减少每行的开销。
- 不必额外做任何事情来保存数据。
使用直接内存和内存映射文件并不像使用Java对象那样简单,但是如果您有大量数据需求,则可能会有很大的不同。
我已经在之前的文章中讨论过,对于低延迟要求,使用直接内存和内存映射文件也可以有很大的不同。
参考: 使用 Vanilla Java博客的JCG合作伙伴 Peter Lawrey 可以更快地使用直接内存 。
翻译自: https://www.javacodegeeks.com/2012/11/when-using-direct-memory-can-be-faster.html
使用直接内存时可以更快相关推荐
- nginx内存池大小快内存_使用直接内存时可以更快
nginx内存池大小快内存 总览 使用直接内存不能保证提高性能. 考虑到它增加了复杂性,除非有充分的理由使用它,否则应避免使用它. 塞尔吉奥·奥利维拉(Sergio Oliveira Jr)的这篇出色 ...
- java 本地内存_哪个更快:Java堆还是本地内存
使用Java的一个好处就是你可以不用亲自来管理内存的分配和释放.当你用new关键字来实例化一个对象时,它所需的内存会自动的在Java堆中分配.堆会被垃圾回收器进行管理,并且它会在对象超出作用域时进行内 ...
- 德鲁伊 oltp oltp_内存中OLTP –更快变得更简单!
德鲁伊 oltp oltp In-memory OLTP is a revolutionary tool introduced on SQL Server 2014. On SQL Server 20 ...
- 【小睿精选·第四期】谷歌开源更快、更高效的 TensorFlow 运行时 TFRT
[小睿精选] [小睿精选]第四弹来啦,本期共收录6条嵌入式资讯信息,希望可以帮到你.欢迎大家在文末留言,唠一唠你关注的话题,说不定下期就有你想要的惊喜! 1.中科蓝讯与阿里"平头哥" ...
- lan的以太网标准_并非所有以太网电缆都是平等的:通过升级,您可以获得更快的LAN速度...
lan的以太网标准 Wired connections, which use Ethernet cables, are generally faster and have lower latency ...
- 三星android9更快么,三星S9将会成为最快Android手机 有6大要点你必须知道
腾讯数码讯(云之外)三星将会在2月25日推出Galaxy S9,离现在只有不到2周的时间了,我们已经对手机的性能有了一些了解. 如果S9安装高通骁龙845芯片,它的速度将会比S8快30%,S8是三星目 ...
- 为了追求更快,CPU、内存、I/O都做了哪些努力?
背景 曾经,我面试的时候有两个最怕的.一怕问算法,二怕问高并发. 算法这个,刷了不少LeetCode,发现还是有套路可循的,虽不敢说算法能力有多强,至少没有以前那么怕了(才怪). 而第二个,高性能高并 ...
- Android性能优化:手把手教你如何让App更快、更稳、更省(含内存、布局优化等)...
2019独角兽企业重金招聘Python工程师标准>>> 前言 在 Android开发中,性能优化策略十分重要 因为其决定了应用程序的开发质量:可用性.流畅性.稳定性等,是提高用户留存 ...
- 哪个更快:Java 堆还是本地内存
使用Java的一个好处就是你可以不用亲自来管理内存的分配和释放.当你用new关键字来实例化一个对象时,它所需的内存会自动的在Java堆中分配.堆会被垃圾回收器进行管理,并且它会在对象超出作用域时进行内 ...
最新文章
- 超四分之一的人工可能被机器取代,AI或成英国脱欧的一大阻碍
- How to uninstall git
- (五)资源优化 (经典性能优化解决方案)
- Wizard of Orz CodeForces - 1467A
- 又到一年“粽子节”,快来测测你包的粽子颜值几分
- C#Linq的10个练习
- submit与button区别提交区别
- 程序员离不开这 7 大编程方法!
- C#基础-Func,Action
- 同步现象 心理学_「心理学学了些什么?」基础心理学知识1
- cydia无法安装卸载插件_【初识太极】CAD卸载不干净无法重新安装怎么办?
- Android无线调试设备WIFI安装apk
- 一本通1325:【例7.4】 循环比赛日程表
- java实现计算器_Java 实现简单计算器
- 细说group by 和having 以及count函数的 联合使用
- svn + 百度云同步盘
- LeetCode(6)-Python-Z 字形变换(zigzag-conversion)
- 财务管理计算机实验日志5天,关于财务管理的实习日记范文
- 如何学好C语言,一个成功人士的心得!
- 吴恩达Coursera深度学习课程 deeplearning.ai (4-4) 神经风格转换--编程作业
热门文章
- javaI/O流小结
- thinking-in-java(13) String字符串
- LNCS用户写作指南【 Springer Computer Science Proceedings 】
- 快慢指针:141. 环形链表(判断是否存在环路)
- java –cp ./:_成为Java流专家–第2部分:中级操作
- java中的方法求和_在Java中模拟求和类型的巧妙解决方法
- jvm gc阻塞时长 占比_jvm进行转义分析需要多长时间? 可能比您想象的要长。
- java lambda::_基准测试:Java 8 Lambda和流如何使您的代码慢5倍
- 在邮件标头中找到无效的字符_在实践中重试HTTP标头
- 鸡肉和鸡蛋–测试前解决Spring属性