性能优化

Posted youzhongmin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能优化相关的知识,希望对你有一定的参考价值。

前端性能优化

1、页面的HTTP请求数量

  在建立HTTP连接时需要重新经历TCP协议握手,并在每次请求时需要包含相同的header和cookie,这就需要耗费网络带宽,因此可以采用合并样式和脚本文件的方式来减少请求数。

2、使用压缩

  对前端样式文件与脚本文件可以采用压缩的方式去掉空格或者注释等不必要的字符,这样可以减少在网络中传输的字节数。但是压缩会消耗一定的CPU资源。

Java程序优化

1、单例模式

  对于I/O处理、数据库连接、配置文件解析加载等一些非常耗费资源的操作,我们必须对这些实例的创建进行限制,或者始终使用一个公公用的实例依次来节约系统开销,在这种情况下可以使用单例模式。

2、Future模式

  在执行一个任务需要花费大量的时间时,为了省去不必要的等待时间,可以使用Futrue,然后继续处理其他的任务,直到Futrue任务执行完毕后将结果返回,对结果进行处理。

3、线程池

  在有某一个任务执行时需要耗费大量的时间,如果该任务可以分解执行,可以通过多线程的方式并行执行,并将执行后的任务结果合并。但是并发数不能太多,内存占用太多,因为这有可能会导致内存溢出。

4、降低锁竞争

  锁的竞争会使得更多的线程竞争,本来并行的操作变为串行,并且会导致上下文频繁的切换,因此减少竞整是提高效率的一种方式,降低锁竞争的一种有效方式是尽可能的缩短锁的持有时间,例如可以将与锁无关的代码段移到锁之外。

  另一种减少锁的持有时间的方式是将原先保护的多个变量变为多个相互独立的锁分别保护这几个变量。

class LikeCount{
    private Integer likeApple=0;
    private Integer likePear=0;
    public synchronized void likePear(){
        likePear++;
    }
    public synchronized void likeApple(){
        likeApple++;
    }
    public synchronized void unlikePear(){
        likePear--;
    }
    public synchronized void unlikeApple(){
        likeApple--;
    }
}

  将上述代码改为如下形式:

class LikeCount{
    private Integer likeApple=0;
    private Integer likePear=0;
    public void likePear(){
        synchronized (likePear){
        likePear++;
        }
    }
    public  void likeApple(){
        synchronized(likeApple){
           likeApple++;
    }
    public void unlikePear(){
        synchronized (likePear){
         likePear--;
       }
    }
    public void unlikeApple(){
        synchronized (likeApple){
         likeApple--;
          }
    }
}    

结果缓存

  对于请求比较频繁并且每次都要对数据库进行查询,为了每次请求能够及时的获取数据,减少数据库的查询压力,可以将查询结果保存到缓存中,可以是redis或者memcached等。

数据库查询性能优化

 1、合理使用索引

 2、合理设计范式

 3、使用查询缓存

 4、使用搜索引擎

 5、GC优化

  


以上是关于性能优化的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript性能优化5——JSBench工具的使用

优化 C# 代码片段、ObservableCollection 和 AddRange

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

如何优化C ++代码的以下片段 - 卷中的零交叉

前端总结--性能优化

从JVM的角度看JAVA代码--代码优化