文档章节

代码优化

Znic
 Znic
发布于 2017/01/11 21:49
字数 258
阅读 22
收藏 0

部分摘自《代码大全》

1.让运行最快和较大概率为真多判断首先被执行

适用于if/else和case语句

 

2.用查询表代替复杂的表达式

如果有复杂的输入,先将结果计算好放在一张表里

 

3.避免在循环中重复判断,

 

4.设置哨兵值

bool found = false;
i = 0;
while(!found && i < cnt)
{
    if (item[i++] == value)
    {
        found = true;
        break;
    }
}
// 优化后
item[cnt] = value;
while( item[i] != value)
{
    i++;
}
if(i < cnt) found = true;

 

5.循环展开

nt amount = 0;
for(int i = 0; i < len; i++)
{
    amount += a[i];
}
// 优化后
int i = 0;
while(i < len - 3) //注意不能超过len,最后len%4个要处理
{
    amount += (a[i + a[i + 1] + a[i + 2] + a[i + 3] ) ;
    // amount += a[i + 1]; 依赖上一条语句的执行结果,只能顺序执行,不能利用cpu的并行计算
    i += 4;
}
while(i < len)
{ 
    amount += a[i];
    i++;
}

 

6.profile driven optimize

举个例子:

a = b * 50;

如果b大部分情况都等于10,可以优化如下:

a = 50;

if (b != 10)

{

    a = b * 10;

}

 

© 著作权归作者所有

Znic
粉丝 1
博文 6
码字总数 1888
作品 0
深圳
程序员
私信 提问
WebAssembly 系列(二)JavaScript Just-in-time (JIT) 工作原理

作者:Lin Clark 翻译原文:http://huziketang.com/blog/posts/detail?postId=58c12f36a6d8a07e449fdd22 英文原文:A crash course in just-in-time (JIT) compilers 本文是关于 WebAssembl......

胡子大哈
2017/03/09
0
0
Google V8 引擎工作原理(翻译)

V8 引擎如何执行JS,之前看过 Webkit 技术内幕,也只是走马观花。并没有深入理解,突然看到这篇文章,翻译之How does the Google V8 engine work? 引擎是如何工作的?这是一个非常好的问题,...

YaHuiLiang(Ryou)
2018/07/19
0
0
WebAssembly 系列(五)为什么 WebAssembly 更快?

本文作者:Lin Clark 翻译原文:http://huziketang.com/blog/posts/detail?postId=58c8b98da6d8a07e449fdd25 英文原文:What makes WebAssembly fast? 本文是关于 WebAssembly 系列的第五篇文......

胡子大哈
2017/03/15
0
0
C++ 命名返回值优化(NRVO)

命名的返回值优化(NRVO),这优化了冗余拷贝构造函数和析构函数调用,从而提高了总体性能。值得注意的是,这可能导致优化和非优化程序之间的不同行为。 下面是代码段1中的一个简单示例,以说...

科技小能手
2017/11/12
0
0
vue-cli3 项目框架优化(OneLine周分享)

Vue项目优化的背景 项目是通过vue-cli3 来构建的, 项目随着需求的不断增加. 代码量也在随着增大. 项目的文件大小也随着增加. 但是这一情况就变得,异常棘手. 我们也需要找到解决办法, 来处理这...

oneLine
03/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
6
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部