运算符性能优化

简介: 尽量避免使用乘*、除/、模%、浮点数运算,效率比较低

尽量避免使用乘*、除/、模%、浮点数运算,效率比较低


 

1,移位与浮动数运算性能比较

 

1,新容量为旧容量的1.5倍

 35.png

2,注意一个bug: >>运算符不加()报错 涉及到运算符优先级问题


36.png


2,对于 % 的优化(模数、被模数 倍数小于的情况下): 可以转化成减法

✿ n % m 等价于 n – (m > n ? 0 : m) 的前提条件:n < 2m

private int index(int index) {
   index += front; 
    //return index % elements.length;
   //优化为:return index - (index >= elements.length ? elements.length : 0);
    }

 

3,对于 % 的优化: 可以通过统一公式~例如

37.png


统一成公式(奇数的情况)n0 = (n + 1)/ 2; 然后考虑如何符合偶数的情况

【可以看到偶数和奇数就差个 1/2 ,咱需要把相对于偶数,奇数多出来的1/2 消除掉,想到 向下取整floor,可以消除小数, 同时 floor 的加入,并不影响原先奇数的结果】


38.png


【这里只需要将 / 优化成右移】

 

 

4,对于 % 的优化: 可以通过&,【前提:将数组的长度设计为 2 的幂(2n)】,例如:

✿ 哈希函数:作用---将哈希表的key转化成对应表中的索引,从而存放key对应的value。

 

哈希函数具体细节过程:

① 首先生成 key 的哈希值(必须是整数);

② 再让 key 的哈希值跟数组的大小进行相关运算,生成一个索引值;

这里使用 &【前提:将数组的长度设计为 2 的幂(2n),则最大的索引就是2n -1)的原因,例子:

例如:(一个数 & 2n -1)【111...】它会等于自己本身,

同时这个数还是不超过数组的最大范围 2n,实现哈希值,控制在 0 - 2n -1)的区间


39.png


目录
相关文章
|
5月前
|
存储 C语言 开发者
C语言性能优化技巧与实践
C语言性能优化技巧与实践
44 0
|
5月前
|
负载均衡 算法 数据库连接
Go语言性能优化实践:案例分析与解决方案
【2月更文挑战第18天】本文将通过具体的案例分析,探讨Go语言性能优化的实践方法和解决方案。我们将分析几个典型的性能瓶颈问题,并详细介绍如何通过优化代码、调整并发模型、改进内存管理等方式来提升程序的性能。通过本文的学习,读者将能够掌握一些实用的Go语言性能优化技巧,为实际项目开发中的性能优化工作提供指导。
|
5月前
|
C++ UED
C/C++ 性能优化思路
C/C++ 性能优化思路
89 0
|
5月前
|
存储 关系型数据库 MySQL
【性能优化】MySql查询性能优化必知必会
【性能优化】MySql查询性能优化必知必会
108 0
【性能优化】MySql查询性能优化必知必会
|
2月前
|
算法 NoSQL IDE
C语言性能优化:代码优化技巧与工具。
C语言性能优化:代码优化技巧与工具。
59 0
|
5月前
|
算法 C语言
深度探索C语言中的do-while语句:理解、应用与性能优化
深度探索C语言中的do-while语句:理解、应用与性能优化
78 1
|
12月前
|
缓存 固态存储 程序员
性能第二讲:性能优化-每个程序员都应该知道的数字
性能第二讲:性能优化-每个程序员都应该知道的数字
|
存储 编译器 C语言
性能优化特性之:LTO
本文介绍了倚天实例上的编译优化特性:LTO,并从优化原理、使用方法进行了详细阐述。
|
编译器 C++ Anolis
性能优化特性之:PGO
本文介绍了倚天实例上的编译优化特性:PGO,并从优化原理、使用方法进行了详细阐述。
for循环性能优化的几种思路
for循环性能优化的几种思路
78 0