回收对象以提高性能

总览

在上一篇文章中,我说过对象反序列化更快的原因是由于使用了回收对象。 由于两个原因,这可能令人惊讶:1)相信如今创建对象是如此之快,无关紧要或与回收自己一样快,2)默认情况下,任何序列化库都不使用回收。

本文探讨了有无回收对象的反序列化。 创建对象不仅较慢,而且还会通过将数据从CPU缓存中推出来减慢程序的其余部分。

尽管这涉及反序列化,但解析文本或读取二进制文件也是如此,因为所执行的操作是相同的。

考试

在此测试中,我反序列化了1000个Price对象,而且还花费了复制一块数据所需的时间。 该副本表示反序列化后应用程序可能必须执行的工作。

测试定时进行一百万次,并对结果进行排序。 X轴显示百分位计时。 例如,90%的值是90%的最差值(或10%的值更高)。

如您所见,反序列化必须在创建对象时花费更长的时间,但是有时会花费很多时间。 这也许并不令人惊讶,因为创建对象意味着要做更多的工作,并且可能被GC延迟。 但是,令人惊讶的是复制数据块的时间增加了。 这表明不仅反序列化速度变慢,而且需要数据缓存的任何工作也因此变慢。 (这几乎是您在实际应用程序中可能会执行的任何操作)
性能测试很少向您显示对应用程序其余部分的影响。

更详细

检查较高的百分位数(最长的时间),您可以看到,如果反序列化必须等待GC,则性能始终很差。

在最坏的情况下,副本的性能也会大大提高。

编码

回收示例代码

参考: Vanilla Java博客上的JCG合作伙伴 Peter Lawrey 回收对象以提高性能 。

相关文章 :
  • Java Secret:加载和卸载静态字段
  • C ++或Java,高频交易哪个更快?
  • 如何在Java中获得类似于C的性能
  • Java中的低GC:使用原语而不是包装器
  • Java教程和Android教程列表

翻译自: https://www.javacodegeeks.com/2011/11/recycling-objects-to-improve.html

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

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

相关文章

oj系统格式错误_论文查重会不会检查格式?【paperpp吧】

高等学校一般都会要求大学生在毕业时需要写作毕业论文,并且会提前发出关于毕业论文的通知,在通知上一般会说明论文写作的相关要求,其中就会规定论文的相关格式。当然,学校也会在通知中说明论文查重的相关事宜,那么论文…

usb大容量存储设备驱动_usb无法识别怎么办 如何解决usb识别故障【详细步骤】...

usb无法识别怎么办? 随着计算机硬件飞速发展,外围设备日益增多,键盘、鼠标等早已为人所共知,数码相机、MP3随身听接踵而至,这么多的设备,如何接入个人计算机?USB就是基于这个目的产生的。USB是一个使计算机周边设备连…

Java EE过去,现在和云7

最近的JavaOne 2011的一个突出主题是下一个主要的Java EE 7版本。 正如主题发言中所述,有关工作正在进行中。 它将包含我们已经从先行者那里知道的28个规范以及一些新规范。 没人可以告诉您确切的号码,因为EE 7仅在“及时”完成时才会接受新的规范。 这意…

程序员都用什么来记录知识_1年前的小五都用 Python 来做什么?

↑ 点击上方 “凹凸数据” 关注 星标 ~ 每天更新,干货不断 (多图预警)注:这是小五一年前在知乎的回答,当时还只有凹凸数读一个公众号,所以很多图片都会带有数读或者知乎的水印。作为一个菜鸟数据分析师,只会sqlpytho…

SQL-行转列(PIVOT)实例1

--未旋转之前的查询结果 select s.Name ShiftName,h.BusinessEntityID,d.Name as DpartmentName from HumanResources.EmployeeDepartmentHistory h inner join HumanResources.Department d on h.DepartmentIDd.DepartmentIDinner join HumanResources.Shift s on s.ShiftIDh…

webservice接口_webservice服务器端发票识别接口

关键词:发票识别 私有云发票识别 发票识别API接口 webservice发票识别平台发票,一个再也熟悉不过的财务往来凭证,录入发票,一项让多少财会人员头疼的工作。过去录入一张发票需要一个财会人员5分钟的时间,那么这个人在工…

一个简单的socket通信小demo

写了一个socket的程序,可以和本地的服务器进行通信,要先和服务器建立链接,然后发送登录信息,验证成功,就可以和服务器通信了 1 页面截图 2 点击链接服务器,可以链接服务器,服务器的ip地址为&…

汉仪尚巍手书可以商用吗_【商用车维修】夏天修空调可以撑起全年修车收入的一半,你会了吗?...

更多精彩,请点击上方蓝字关注我们!车载空调是炎热的季节必不可少的利器,但用得多,毛病也多了起来,今天和大家分享一些空调系统的相关知识,助力修车师傅们来应对空调系统的相关故障问题。如何判断制冷系统的…

Git 简单使用

1.Git是什么 简介:Git是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的,被认为是分布式版本控制工具中的顶级水准。智能、友好、强健、高效。 作用:新建一个分支,把服务器上最新版的代码fetch下来&#x…

Vaadin附加组件和Maven

介绍 我喜欢Vaadin的 (众多)一件事是它对Vaadin框架的“附加组件”社区-他们称之为Vaadin目录 。 “附加组件”是框架中社区贡献的附加组件,可以是任何东西,例如从新的客户端小部件到数据表的延迟加载容器。 我肯定会为Activiti看…

八皇后时间复杂度_【算法打卡】N皇后

难度:困难题目:n 皇后问题研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。提示:皇后,是国际…

Android-Binder 简析

前言 对于Android来说,Binder的重要性怎么说都不为过。不管是我们的四大组件Activity、Service、BroadcastReceiver、ContentProvider,还是经常在应用中使用到的各种ServiceManager,其背后都是Binder在支撑。然而Binder机制又不是三言两语能够…

tplink 703刷固件

1.软件下载: ImageBuilder链接 如果是全新刷机的话,使用:http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin 如果是系统升级的话,使用:http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/op…

编程反模式

您是否曾经进行过代码审查,记录了非常高的WTF / m? 您是否想知道所有这些错误代码的原因是什么? 在大多数情况下,导致原因1的主要原因是使用设计和编码反模式。 如果您喜欢定义,请参见以下内容:AntiPatter…

sql 插入text字段包含特殊字符_Kettle(PDI)转换中输出之插入/更新详解

概述Insert / update(插入 / 更新)此步骤首先使用一个或多个查询关键字查找表中的一行。如果找不到该行,则插入该行。如果可以找到它,并且要更新的字段相同,则不执行任何操作。如果它们不完全相同,则更新表中的行。注意&#xff1…

一张图让你看清Java集合类(Java集合类的总结)

如今关于Java集合类的文章非常多,可是我近期看到一个非常有意思图片,基本上把Java集合的整体框架都给展现出来了。非常直观。 假设发现图片看不清楚。点此处看大图 在这里,集合类分为了Map和Collection两个大的类别。 处于图片左上角的那一块…

【P1835】小红花

很简单的题,然而我没想到,在NOIP上怎么办嘛QAQ 话说这题不知道怎么分类啊……先扔到玄学里边把…… 原题: Fj在圣诞节来临之际,决定给他的奶牛发一些小红花。现在Fj一共有N头奶牛,这N头牛按照编号1..N,排成…

Cocos2d-x 3.2 Lua演示样例FontTest(字体測试)

Cocos2d-x 3.2 Lua演示样例FontTest(字体測试)本篇博客介绍Cocos2d-x 3.2中Lua測试项目中的FontTest样例,主要使用了字体文件来创建我们想要的字体样式:第一个參数为文本。第二參数为ttf字体文件,第三个參数为字体大小…

linux上安装memcached步骤

libevent: http://libevent.org/ 服务器端:https://code.google.com/archive/p/memcached/downloads 客户端: http://pecl.php.net/package/memcache 和 http://pecl.php.net/package/memcached 二选一 http://chenzhou123520.iteye.com/blog/1…

具有GlassFish和一致性的高性能JPA –第2部分

在我的四部分系列的第二部分中,我将解释将Coherence与EclipseLink和GlassFish一起使用的策略第一。这描述了配置Coherence的JPA支持的Cache所必须采取的步骤,以及如何在GlassFish中使用它。高性能数据存储。 一般的做法 您可以将Coherence API与通过JPA映…