首页 > 其他分享 >简单一些常见的运算优化

简单一些常见的运算优化

时间:2024-12-10 16:13:58浏览次数:10  
标签:取模 11101 运算 二进制 常见 29 优化 前缀

一些非常 常见的运算优化方式。或许有时候并不那么直观表意了,但在极致看重资源效率等情况下,还是可以多用用的,哪怕心里知道也行,提高对这些的敏感度

举例

  1. 一个数 n 与 2^k - 1 进行 位与 运算 n & (2^k - 1),相当于取 n 在二进制形式下最低的 k 位,这等效于 n % 2^k 取模的结果。
    • 比如阿里云oss的性能最佳实践里,建议将顺序前缀改为随机性前缀,以避免部分分区成为热点而过载,即大量文件集中在少数几个分区中。为了更好的平衡,可以使用一定的方式来合理划分文件索引,让各个分区的IO负载均衡。
      假如我们通过对业务内的某个字段值进行统一的某种运算获取结果,作为oss存储路径前缀一部分,从而将业务数据均衡的划分到不同的路径索引下。此时就可以进行 位与 运算。打比方,所有的该业务字段对 8 取模,将结果作为路径前缀之一。打比方 29 % 8 = 5,则可以换为 29 &(8-1) = 5
      因为29 在二进制中是 11101 ,而(8-1)也就是(2^3 - 1)2的三次方后减 1 ,结果7 的二进制是00111 。所以位与操作就是 11101 & 00111=00101,保留了11101的低三位101 (位与 运算只有二者的同位都是1时,才会得到1,其他都是0),而101的十进制就是 5
    • 当然前面的赘述只是给个场景,其实我们在遇到数据时,可以先看看是否为2的幂,2的幂在二进制下只有一位是1,其余都是0 (比如512,是2的9次方,只有最高位是1,其余位全是0,二进制是1000000000。而511则是2的9次方减1,二进制是111111111,九位全是1,非常适合用 位与 运算来优化相应的取模运算)

标签:取模,11101,运算,二进制,常见,29,优化,前缀
From: https://www.cnblogs.com/jhfnewstart/p/18597524

相关文章

  • Numpy矩阵运算笔记
    此篇文章在2022年10月28日被记录Numpy矩阵基本运算1、python矩阵操作引入库:importnumpyasnp创建一个二维矩阵:>>>a=np.mat([[1,2,3],[4,5,6]])打印a矩阵:>>>amatrix([[1,2,3],[4,5,6]])打印a矩阵形状:>>>a.shape(2,3)转置a矩阵:......
  • 遥感与气象数据集的查找与常见数据格式的解释
    数据集的获取遥感数据和气象数据是各种环境和气候研究课题中常用的数据类型,通常会从不同的官方网站和数据平台获取。以下是一些遥感和气象数据课题组常用的数据来源和相关的卫星产品:1.气象数据:ERA5(气象数据)来源:CopernicusClimateChangeService(C3S)类型:ERA5......
  • 贴砖(即铺设大瓷砖)是一项常见的建筑施工工作,涉及到墙面和地面的装饰。为了保证施工质量
    贴砖(即铺设瓷砖)是一项常见的建筑施工工作,涉及到墙面和地面的装饰。为了保证施工质量和持久性,必须遵守相应的施工规范。以下是贴砖施工的一些基本规范,涵盖了操作步骤、材料要求以及质量控制等方面。1. 施工准备工具准备:常用工具包括水平尺、橡皮锤、钢丝刷、铲刀、砖刀、电动搅......
  • 达梦sql优化之执行计划
    执行计划是什么呢?比如你执行一条sql语句,查询优化器会为这条sql语句设计执行方式,交给执行器去执行,查询优化器设计的执行方式就是执行计划。EXPLAIN可以打印出语句的执行计划。那么,执行计划主要是由什么组成的呢?答案是操作符(个人理解)。执行计划是由各类操作符组成的一颗树,从内......
  • 达梦SQL优化
     达梦数据库的SQL优化,最重要的是读懂执行计划,绝大多数时候,可以通过添加索引提升查询性能,有时候可能也需要调整下sql的结构,或者是通过hint去优化。达梦有个sqllog,可以抓应用使用的sql(pachage中的sql抓不到,这个后续再整理),抓出sql后,可以用达梦自己研发的日志分析工具去分析sql,一般......
  • 同城拼车系统:Java源码构建与优化
    同城拼车系统是一个复杂的软件系统,它利用互联网技术将具有相同出行需求的乘客和车主进行匹配,实现资源共享、降低出行成本、减少交通拥堵并提高效率。Java作为一种强大的编程语言,非常适合用于开发这样的系统。以下是对同城拼车系统Java源码构建与优化的详细探讨:一、Java源码构......
  • C语言期末考试——常见考题(模拟考)
    目录一、填空题(每空2分,共20 分)二、选择题(每题2分,共26分)三、编程题(第1题6分,其余题目每题10分)!!!需要答案的可以私信,因为是拿给学生上课做模拟,不能把答案写到文章一、填空题(每空2分,共20 分)c语言是一种结构化的程序设计语言,它具有______、______、______三种基本结构。......
  • 国标GB28181视频平台EasyCVR视频融合平台:安防监控系统中的无线传输的常见类型
    在现代安防监控系统中,无线传输技术扮演着至关重要的角色,它们不仅提高了监控系统的灵活性和覆盖范围,还增强了数据传输的效率和可靠性。本文将详细介绍安防监控系统中的无线传输技术,包括Wi-Fi、无线网桥、4G/5G、微波传输和卫星传输等常见类型,以及它们在实际应用中的优势和挑战。同......
  • 大模型常见面试题汇总(含答案),面试还得八股文,不背不行啊,非常详细收藏我这一篇就够了!
    最近秋招正在如火如荼地进行中,看到很多人的简历上都包含大模型相关的工作,各家大厂和初创都很舍得给钱,动辄百万年包也变得不再稀奇。因此在大模型纵横的这个时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。本文汇总了大模型算法岗常见的面试题(含......
  • 常见的排序算法
    目录1.冒泡排序2.选择排序3.插入排序4.希尔排序5.递归6.归并排序7.快速排序排序的稳定性1.冒泡排序1.比较相邻的元素,如果前一个元素比后一个元素大,则交换这两个元素的位置。2.每一对相邻元素如此反复,从开始的第一对元素到结尾的最后一对元素。最终最后的位置就是......