rsync 同步优化

总览

有一个常见的误解,因为JIT很智能,并且可以消除对象的同步,而该对象仅存在于不影响性能的方法中。

比较StringBuffer和StringBuilder的测试

这两个类基本上做同样的事情,除了一个是同步的(StringBuffer)而另一个不是。 它也是一个类,通常在一种方法中用于构建String。 以下测试试图确定彼此之间可以产生多少差异。

static String dontOptimiseAway = null;
static String[] words = new String[100000];public static void main(String... args) {for (int i = 0; i < words.length; i++)words[i] = Integer.toString(i);for (int i = 0; i < 10; i++) {dontOptimiseAway = testStringBuffer();dontOptimiseAway = testStringBuilder();}
}private static String testStringBuffer() {long start = System.nanoTime();StringBuffer sb = new StringBuffer();for (String word : words) {sb.append(word).append(',');}String s = sb.substring(0, sb.length() - 1);long time = System.nanoTime() - start;System.out.printf("StringBuffer: took %d ns per word%n", time / words.length);return s;
}private static String testStringBuilder() {long start = System.nanoTime();StringBuilder sb = new StringBuilder();for (String word : words) {sb.append(word).append(',');}String s = sb.substring(0, sb.length() - 1);long time = System.nanoTime() - start;System.out.printf("StringBuilder: took %d ns per word%n", time / words.length);return s;
}

最后使用Java 7 update 10使用-XX:+DoEscapeAnalysis打印

StringBuffer: took 69 ns per word
StringBuilder: took 32 ns per word
StringBuffer: took 88 ns per word
StringBuilder: took 26 ns per word
StringBuffer: took 62 ns per word
StringBuilder: took 25 ns per word

用一百万个单词进行测试不会显着改变结果。

结论

  • 尽管使用同步的代价很小,但是它是可以衡量的,并且如果可以使用StringBuilder,则它是首选的,因为它在Javadocs中针对此类的状态进行了说明。
  • 从理论上讲,可以优化同步,但是即使在简单情况下也是如此。

参考: 可以优化同步吗? 来自我们的JCG合作伙伴 Peter Lawrey,来自Vanilla Java博客。

翻译自: https://www.javacodegeeks.com/2012/12/can-synchronization-be-optimised-away.html

rsync 同步优化

rsync 同步优化_可以优化同步吗?相关推荐

  1. 第三方数据库同步工具_数据库实时同步和复制_mysql数据库同步工具

    SyncNavigator v8.6.2 SyncNavigator是一款功能强大的数据库同步软件,适用于SQL SERVER, MySQL,具有自动/定时同步数据.无人值守.故障自动恢复.同构/异构 ...

  2. insert into select 优化_数据库优化总结

    第一部分:SQL语句优化 1.尽量避免使用select *,使用具体的字段代替*,只返回使用到的字段. 2.尽量避免使用in 和not in,会导致数据库引擎放弃索引进行全表扫描. SELECT * ...

  3. oracle sequences优化_性能优化-Oracle RAC中的Sequence Cache问题

    性能优化-Oracle RAC中的Sequence Cache问题 enq: SQ - contention 在RAC情况下,可以将使用频繁的序列Cache值增加到10000,或者更高到50000,这 ...

  4. 虚拟同步发电机_测量虚拟同步发电机惯量与阻尼系数的新方法

    征稿通知 第四届轨道交通电气与信息技术国际学术会议 阅读征文通知,请戳上面标题  ▲ 联合主办 中国电工技术学会 北京交通大学轨道交通控制与安全国家重点实验室 联合承办 中国电工技术学会轨道交通电气设 ...

  5. java运行效率优化_如何优化JAVA代码及提高执行效率

    展开全部 1)尽量指定类.方法的final修饰符.带有final修饰符的类是不可派生的,Java编译器会寻找机会内32313133353236313431303231363533e4b893e5b19 ...

  6. 异步复位同步释放_简谈同步复位和异步复位

    简谈同步复位和异步复位 大侠们,江湖偌大,有缘相见,欢迎一叙,今天来聊一聊数字电路设计中的同步复位和异步复位. 谈到同步复位和异步复位,那咱们就不得不来聊一聊复位这个词了.在数字逻辑电路设计中,电路通 ...

  7. mysql 范围优化_如何优化mysql的范围查询

    本文预计分为两个部分: (1)联合索引部分的基础知识 在这个部分,我们温习一下联合索引的基础 (2)联合索引部分的实战题 在这个部分,列举几个我认为算是实战中的代表题,挑出来说说. 正文 基础 讲联合 ...

  8. mysql如何优化性能优化_如何优化性能?MySQL实现批量插入以优化性能的实例详解...

    这篇文章主要介绍了MySQL实现批量插入以优化性能的教程,文中给出了运行时间来表示性能优化后的对比,需要的朋友可以参考下 对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时 ...

  9. mysql 半同步 插件_编写半同步复制插件

    编写半同步复制插件 本节介绍如何使用plugin/semisyncMySQL源代码分发目录中的示例插件编写服务器端半同步复制插件.该目录包含名为rpl_semi_sync_master和的主插件和从插 ...

最新文章

  1. linux carry php Soap 扩展
  2. 一次因NAS存储故障引起的Linux系统恢复案例
  3. dynamips模拟器模块详细介绍
  4. 用matlab求解工作时间调度问题,置换流水车间调度问题的MATLAB求解.doc
  5. ElasticSearch下载安装启动详细图解
  6. 欧几里得求最大公约数--JAVA递归实现
  7. kotlin枚举_Kotlin枚举班
  8. 学会Git玩转Github笔记(三)—— Github Pages 搭建个人网站
  9. day01 继承、抽象类和模板设计模式
  10. win10 更改中文用户名为英文
  11. 【中英】【吴恩达课后编程作业】Course 4 -卷积神经网络 - 第四周作业
  12. 为了让5G更省电,这家设备商秀出黑科技
  13. google hacking常用语法
  14. 计算机系统基础期末复习--袁春风详细版
  15. 像素格式结构-PIXELFORMATDESCRIPTOR
  16. Pandas.Series的加减乘除数学运算
  17. WIN8应用商店闪退
  18. 普通相片打印纸如何长时间保存
  19. 【lssvm回归预测】基于遗传算法优化最小二乘支持向量机GA-lssvm实现数据回归预测附matlab代码
  20. Webservice与Servlet

热门文章

  1. 关于Java类加载双亲委派机制的思考(附面试题)
  2. 《金色梦乡》金句摘抄(十)
  3. 维护win10注册表
  4. 16岁应该遵循什么_成人学习一般遵循的规律
  5. 2.Idea分支的merge
  6. javaweb调用python算法_请教怎么用java远程调用python? 多谢
  7. 水晶报表图形位置_看了我用Excel做的年度报表,老板直夸好
  8. 转: 虚拟IP(VIP)原理
  9. java模式匹配_用Java匹配模式
  10. jwt令牌_jwt-cli:用于解码JSON Web令牌(JWT令牌)的Shell库