本文简单介绍一下在写代码过程中用到的一些让JAVA代码更高效的技巧.

1.   将一些系统资源放在池中(如数据库连接, 线程等)

 在standalone的应用中, 数据库连接池可以使用一些开源的连接池实现, 如C3P0, proxool和 DBCP等,运行在容器中的应用可以使用服务器提供的DataSource.线程池可以使用JDK本身就提供的java.util.concurrent.ExecutorService.

 import java.util.concurrent.Executors;  

 import java.util.concurrent.ExecutorService;  

 public class JavaThreadPool {  

      public static void main(String[] args) {  

      ExecutorService pool = Executors.newFixedThreadPool(2);  

      Thread t1 = new MyThread();  

      Thread t2 = new MyThread();  

      Thread t3 = new MyThread();  

      Thread t4 = new MyThread();  

      Thread t5 = new MyThread();  

      pool.execute(t1);  

      pool.execute(t2);  

      pool.execute(t3);  

      pool.execute(t4);  

      pool.shutdown();  

      }  

 }  
 class MyThread extends Thread {  

      public void run() {  

      System.out.println(Thread.currentThread().getName() + "running....");  

      }  

 }  

2.  减少网络开销(在和数据库或者远程服务交互的时候, 尽量将多次调用合并到一次调用中)

3.  将经常访问的外部资源cache到内存中

简单的可以使用static的hashmap在应用启动的时候加载, 也可以使用一些开源的cache框架, 如OSCache和Ehcache等. 和资源的同步可以考虑定期轮询和外部资源更新时候主动通知; 或者在自己写的代码中留出接口(命令方式或者界面方式)共手动同步.

4.   优化IO操作

JAVA操作文件的时候分InputStream and OutputStream, Reader and Writer两类, stream的方式要快, 后者主要是为了操作字符而用的, 在字符仅仅是ASCII的时候可以用stream的方式提高效率.

       JDK1.4之后的nio比io的效率更好.

OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("d:/test.txt")));

out.write("abcd".getBytes());

  out.flush();

  out.close();

  利用BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter减少对磁盘的直接访问次数.

     FileReader fr = new FileReader(f);

       BufferedReader br = new BufferedReader(fr);

       while (br.readLine() != null) count++;

5.   不要频繁的new对象, 对于在整个应用中只需要存在一个实例的类使用单例模式.

6.   对于String的连接操作, 使用StringBuffer或者StringBuilder.

7.   对于utility类型的类通过静态方法来访问.

避免使用错误的方式, Exception可以控制方法推出, 但是Exception要保留stacktrace消耗性能, 除非必要, 不要使用instanceof做条件判断, 尽量使用比的条件判断方式.

8. 使用JAVA中效率高的类,比如ArrayList比Vector性能好.

9. 对性能的考虑要在系统分析和设计之初就要考虑.

总之, 一个系统运行时的性能, 无非是从CPU、 Memory和IO这三个主要方面来考虑优化. 减少不必要的CPU消耗, 减少不必要的IO操作, 增加Memory利用效率.

让JAVA代码跑得更快的更多相关文章

  1. 面试官:如何写出让 CPU 跑得更快的代码?

    前言 代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能. CPU 内部嵌入了 CPU ...

  2. 让DB2跑得更快——DB2内部解析与性能优化

    让DB2跑得更快——DB2内部解析与性能优化 (DB2数据库领域的精彩强音,DB2技巧精髓的热心分享,资深数据库专家牛新庄.干毅民.成孜论.唐志刚联袂推荐!)  洪烨著 2013年10月出版 定价:7 ...

  3. UOJ 【UR #5】怎样跑得更快

    [UOJ#62]怎样跑得更快 题面 这个题让人有高斯消元的冲动,但肯定是不行的. 这个题算是莫比乌斯反演的一个非常巧妙的应用(不看题解不会做). 套路1: 因为\(b(i)\)能表达成一系列\(x(i ...

  4. 90% 的 Java 程序员都说不上来的为何 Java 代码越执行越快(2)- TLAB预热

    经常听到 Java 性能不如 C/C++ 的言论,也经常听说 Java 程序需要预热,那么其中主要原因是啥呢? 面试的时候谈到 JVM,也有很多面试官喜欢问,为啥 Java 程序越执行越快呢? 一般人 ...

  5. 【UOJ#62】【UR #5】怎样跑得更快(莫比乌斯反演)

    [UOJ#62][UR #5]怎样跑得更快(莫比乌斯反演) 题面 UOJ 题解 众所周知,\(lcm(i,j)=\frac{ij}{gcd(i,j)}\),于是原式就变成了: \[\sum_{j=1} ...

  6. 「UR#5」怎样跑得更快

    「UR#5」怎样跑得更快 膜这个您就会了 下面是复读机mangoyang 我们要求 \[ \sum_{j=1}^n \gcd(i,j)^{c-d} j^d x_j=\frac{b_i}{i^d} \] ...

  7. [翻译] 5点建议,让iOS程序跑得更快

      [文章原地址]http://mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-5-tips-to-increase-app-performanc ...

  8. 90% 的 Java 程序员都说不上来的为何 Java 代码越执行越快(1)- JIT编译优化

    麻烦大家帮我投一票哈,谢谢 经常听到 Java 性能不如 C/C++ 的言论,也经常听说 Java 程序需要预热,那么其中主要原因是啥呢? 面试的时候谈到 JVM,也有很多面试官喜欢问,为啥 Java ...

  9. 让你的 Node.js 应用跑得更快的 10 个技巧(转)

    Node.js 受益于它的事件驱动和异步的特征,已经很快了.但是,在现代网络中只是快是不行的.如果你打算用 Node.js 开发你的下一个Web 应用的话,那么你就应该无所不用其极,让你的应用更快,异 ...

随机推荐

  1. 6款好用的Python IDE

    “工欲善其事,必先利其器”,如果说编程是程序员的手艺,那么IDE就是程序员吃饭的家伙了.一个优秀的IDE,最重要的就是在普通文本编辑之外,提供针对特定语言的各种快捷编辑功能,让程序员尽可能快捷.舒适. ...

  2. android app widget 创建调用周期

    1 ?Android widget 大小问题 2 ?RemoteViewService Android开发历程_15(AppWidget的使用) Appwidget就是手机应用中常常放在桌面(即hom ...

  3. Linux ed

    ed 编辑器是 Linux 操作系统下最简单的文本编辑器.它是以行为单位对文件进行编辑的编辑器,而不像 MS-DOS 系统下的 edit 那样是以整个屏幕框架为单位对文件进行编辑的.因此,如果你已经习 ...

  4. 判断浏览器js代码

    (function(){ var UA = {}; var ua = navigator.userAgent.toLowerCase(),s; UA.ie = (s = ua.match(/(msie ...

  5. android eclipse集成环境

    Android开发工具(ADT)是一个插件为Eclipse IDE,它的目的是给你一个强大的,集成的环境来构建Android应用程序. ADT扩展了Eclipse的功能使用Android SDK工具, ...

  6. Cassandra1.2文档学习(15)—— 配置数据一致性

    参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_config ...

  7. cxgrid footer summary value by a column

    var AIndex: integer; AValue: variant; begin with cxGrid1DBTableView1.DataController.Summary do begin ...

  8. 由于Linux操作平台屡次受到黑客的“青睐”,LINUX公司也越来越注重产品的安全问题。

    Guardian Digital公司和安全管理服务提供商(MSSP)Guardent公司推出的新产品将提高开放式源代码和Linux产品的安全性能. Guardian Digital公司将于本月底在纽约 ...

  9. 2016 系统设计第一期 (档案一)MVC a标签 跳转 Html.ActionLink的用法

    html: <a class="J_menuItem" href="baidu.com">权限管理</a> cshtml: 原有样式: ...

  10. 2016 系统设计第一期 (档案一)MVC 引用 js css

    @Styles.Render("~/Bootstrap/css/bootstrap-theme.css") @Scripts.Render("~/jQuery/jquer ...