
Basic Computer Science
FesianXu
腾讯-微信事业群-高级算法工程师, 百度-搜索策略部-前高级算法工程师。 主要从事多模态检索、视频检索、信息检索,大模型落地应用等领域工作。
展开
-
用“位操作”取代“取模操作”判断奇数偶数
在刷题过程中,我们经常会遇到需要判断某个整数是奇数还是偶数的情况,这个时候,我们可能会采取取模的操作,直接判断,如:num % 2 == 0;num % 2 == 1;然而,取模操作是非常慢的(按照速度来说,位移操作>=加减法>>乘除法,取模,具体见文末的备注),因此我们应该尽量避免使用取模操作,在判断奇数偶数时,我们可以用位操作替代取模操作,因为我们知道,偶数可以被2整...原创 2020-03-31 18:36:02 · 1514 阅读 · 0 评论 -
C语言中去除不必要的内存引用可以有效地提高性能
在C语言中,我们经常会存在对某个内存地址进行引用的操作,也就是如下列代码所示的,对指针进行取内容:int vars[10];int var = *(vars+3); //这里就是对数组vars的第三个元素进行引用这种内存引用操作对应的汇编代码通常如:mov (%rax), %rdx; # 把地址位于%rax的内存值进行取出。mov 12(%rax), %rdx;# 把地址位于%ra...原创 2020-02-02 22:24:12 · 873 阅读 · 1 评论 -
c语言中内循环和外循环的位置可能产生性能上的区别
在图像处理相关的代码中,我们经常有类似于以下的代码,去遍历多维数组(张量)的每一个元素:#define LENGTH 10000void proc(){ uint8 datas[LENGTH][LENGTH]; int i, j; long long sum = 0; for (i = 0; i < LENGTH; i++){ for (j = 0; j < LENGT...原创 2020-02-01 00:01:49 · 3410 阅读 · 2 评论 -
一文理解C语言中的volatile修饰符
一文理解C语言中的volatile修饰符 2019/12/2 FesianXu前言volatile修饰符是在嵌入式开发和多线程并发编程中常见的修饰符,理解其对于实践过程非常有帮助,此文参考了[1],并且附上了笔者的一些例子,希望对大家有所帮助。∇\nabla∇联系方式:e-mail: FesianXu@gmail.comQQ: 973926198github: ...原创 2019-12-02 20:23:19 · 1179 阅读 · 1 评论 -
C语言中的内存布局(memory layout)
C语言中的内存布局(memory layout) 2019.11.20 FesianXu前言最近看了关于内存布局的文章[1],感觉讲的很好,结合他这里的原文,这里做大部分的翻译和理解注释等,希望对各位有所帮助。∇\nabla∇联系方式:e-mail: FesianXu@gmail.comQQ: 973926198github: https://github.com...原创 2019-11-21 15:44:05 · 3450 阅读 · 0 评论