在深入了解Java虚拟机里读到:
在try{}块里面执行代码,比if(x!=null)效率要高,前提是被catch的几率很低的情况下.

但是

在Effective Java里读到:
因为异常机制的设计初衷是用于不正常的情形,所以很少会有JVM实现视图对他们进行优化,使得与显示的测试一样快速.
把代码放在try-catch块中反而阻止了现代JVM实现本来可能要执行的某些特定优化.
对数组进行遍历的标准模式并不会导致冗余的检查.有些现代的JVM实现会将他们优化掉.
实际上在现代的JVM实现上,给予异常的模式比标准模式要慢得多.

在Java平台上对优化的结果进行测量,比在其他的传统平台上更有必要,因为Java程序设计语言没有很强的性能模型(Performance model).各种基本操作的相对开销也没有明确定义.程序员所编写的代码与CPU执行的代码之间存在"语义沟(semantic gap)",而且这条语义沟比传统的编译语言中的更大,这使得想可靠地预测出任何优化的性能结果都非常困难.大量流传的关于性能的说法最终都被证明为半真半假,或者根本就不正确.
不仅Java的性能模型未得到很好的定义,而且在不同的JVM实现,或者不同的发行版,以及不同的处理器,在它们这些当中也都各不相同.如果将要在多个JVM实现和多种硬件平台上运行程序,很重要的一点是,需要在每个Java实现上测量优化结果.有时候,还必须从不同的JVM实现或者硬件平台上得到性能结果之中进行权衡.

原则一:不要进行优化.
原则二(对于专家):还是不要进行优化

对于JAVA程序优化的一些想法,读书有感.治疗强迫症良药的更多相关文章

  1. Java 程序优化 (读书笔记)

    --From : JAVA程序性能优化 (葛一鸣,清华大学出版社,2012/10第一版) 1. java性能调优概述 1.1 性能概述 程序性能: 执行速度,内存分配,启动时间, 负载承受能力. 性能 ...

  2. 从设计模式的角度看Java程序优化

    一.前言 Java程序优化有很多种渠道,比如jvm优化.数据库优化等等,但都是亡羊补牢的措施,如果能在设计程序架构时利用设计模式就把程序的短板解决,就能使程序更加健壮切容易维护迭代 二.常用的设计模式 ...

  3. Java程序优化的一些最佳实践(转)

    衡量程序的标准 衡量一个程序是否优质,可以从多个角度进行分析.其中,最常见的衡量标准是程序的时间复杂度.空间复杂度,以及代码的可读性.可扩展性.针对程序的时间复杂度和空间复杂度,想要优化程序代码,需要 ...

  4. java程序优化

    程序代码优化要点: 字符串优化:分析String源码,了解String常用方法,使用StringBuffer.StringBuilder. List.Map.Set优化:分析常用ArrayList.L ...

  5. 超大数据量操作 java程序优化[转载]

        一个表中有1000万以上的数据,要对其进行10万次以上的增删查改的操作,请问如何优化java程序对数据库的操作? 通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化. ...

  6. 《Java程序员面试宝典》读书笔记1

    今天读书发现一个很有趣的问题 请问以下程序会输出什么? public   class   Test2   {  public   static   void   main(String[]   arg ...

  7. JAVA程序优化之字符串优化处理

    字符串是软件开发中最为重要的对象之一.通常,字符串对象或其等价对象(如char数组),在内存中总是占据了最大的空间块.因此如何高效地处理字符串,必将是提高系统整体性能的关键所在. 1.String对象 ...

  8. 记一次 java程序优化

    优化原因 环境中部署两个程序: web应用 tomcat   10G(webservice服务端,前端web服务) java应用               5G(webservice客户端,sock ...

  9. Java程序优化细节

    1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:    1).控制资源的使用,通过线程同 ...

随机推荐

  1. SQLSERVER存储过程语法详解

    CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ...

  2. 【Spring实战】--1Spring的核心

    最近面试总会涉及Spring的优点,SpringMVC与Struts2的比较,生活慢慢稳定下来,这些面试还是应了那句话“只顾盲目拉车,不会低头看路”,回过头来还是要好好研究一下Spring,如果仅仅是 ...

  3. Mybatis集成到spring boot

    1, Mybatis简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...

  4. Jquery实现选项卡效果

    <script type="text/javascript"> $(document).ready(function(){ $('.ct:gt(0)').hide(); ...

  5. FastDFS分布式存储实战

    <FastDFS分布式存储实战> 技术选型 FastDFS相关组件及原理 FastDFS介绍 FastDFS架构 FastDFS工作流程 上传 同步机制 下载 文件合并原理 实验环境说明 ...

  6. Tomcat修改端口号(7.0 version)

    目的:有时端口号可能其他服务占用,就需要修改一下Tomcat的端口号,避免冲突. 自我总结,有什么需要改正的地方,请大家补充,感激不尽! 找到Tomcat的的配置文件server.xml 路径:%to ...

  7. 以C语言为例的程序性能优化 --《深入理解计算机系统》第五章读书笔记

    其实大多数的编译器本身就能提供一些简单的优化,比如gcc就能通过使用 -O2 或者 -O3 的选项来优化程序.但编译器的优化始终也是有限,因为它必须小心翼翼保证优化过程不对程序的功能有改动.故而程序员 ...

  8. Oracle中 in、exists、not in,not exists的比较

    最基本的区别: in 对主表使用索引 exists 对子表使用索引 not in 不使用索引 not exists 对主子表都使用索引 写法: exist的where条件是: "...... ...

  9. 使用document.execCommand复制内容至剪贴板

    API https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand 兼容性 http://caniuse.com/#se ...

  10. c# excel print 打印 将所有列调整为一页

    excel有时候列数比较多,行数也比较多,转换成xps文档的时候,一般是通过打印来实现. 由于打印的范围限制,所以会出现本来在一行的数据,由于列数比较多,溢出范围,被打印到两页了. 为解决这个问题,需 ...