首页
学习
活动
专区
圈层
工具
发布

我在优化代码时学到的那些事

大学时我总以为写代码就是告诉电脑一步步该怎么做。等到真正开始做底层开发,才意识到现代编译器简直就是个有魔法的黑盒子。调试一个性能问题时,我发现编译器把我写的20多行代码优化成了只有5条汇编指令!...好家伙,它偷偷替我做了这么多工作:常量折叠:让编译器替你算数学还记得我第一次看反汇编结果时的震惊 - 我代码里的width * 800 + height * 600直接变成了一个硬编码的数字。...出过几次bug后,我学会了在科学计算代码里避免使用它。真实故事:我是如何修复渲染引擎的回到开头说的那次性能优化。我们的渲染引擎有个着色器编译环节特别慢。...通过分析中间代码,我发现问题出在大量的纹理采样上。...理解它的工作原理,能帮助你:写出对编译器友好的代码知道何时依赖自动优化,何时手动介入更容易找出性能瓶颈如果有一天你发现自己在研究汇编代码,不要害怕 - 欢迎来到优化的兔子洞!

18900
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    论代码评审的重要性以及未来AI在代码评审中的作用

    代码评审在软件开发中扮演着至关重要的角色,它不仅有助于保证代码质量,还能促进团队成员间的知识共享与技能提升。...减少缺陷:在代码评审过程中,可以尽早发现潜在的问题和缺陷,避免在后期产生更严重的后果。 促进知识共享:代码评审是一个很好的知识共享平台,团队成员可以通过审查他人的代码,学习新的编程技术和最佳实践。...优化代码性能:审查可能揭示出影响性能的代码片段,从而进行优化。 代码评审的最佳实践 确定审查目标:在开始代码审查之前,明确审查的目标和范围。...提供具体和建设性的反馈:不仅指出问题所在,还应提供解决方案或改进建议。 AI在代码评审中的作用1....未来AI在优化代码屎山解决技术债务中发挥的作用1. 自动化重构建议:AI可以识别代码中的复杂和冗余部分,自动生成重构建议,帮助开发人员简化代码结构,减少技术债务。2.

    60011

    静态代码分析在智能网联汽车ADAS系统中的3大作用

    静态代码分析作为一种能够在早期识别潜在缺陷的工具,正成为智能驾驶安全的第一道关口。...静态代码分析在ADAS系统中的作用静态代码分析无需运行程序即可检测出漏洞、隐患和违规情况,这对于处理复杂的ADAS代码体系尤为有效。...它的作用主要体现在三个方面:提前发现问题:通过对控制流与数据流的检查,可以识别可能引发系统卡死、内存泄漏或竞争条件的代码。...提高可维护性:让代码更加清晰和规范,降低团队协作中的障碍,便于长期迭代与升级。在ADAS开发中,静态分析不仅能减少潜在风险,也为后续测试和验证提供更高质量的基础。...通过运用Parasoft C/C++test,团队能够把潜在缺陷挡在开发初期,降低返工和延误的成本,在确保安全性的同时提升整体交付效率。智能驾驶的未来,不仅是技术的比拼,更是安全与合规的竞赛。

    22110

    GOT段在linux系统中实现代码动态加载的作用和其他段的说明

    后者其实是.got段的一种特定形式,.got段在程序的加载和执行过程中还有其他形式和作用,在后续章节我们再研究。 上一节我们以调研系统函数puts为例描述了动态加载的基本过程。...当我们在代码中使用puts函数时,编译器并不是将代码编译成直接调用该函数的形式。因为编译器根本不知道操作系统将puts函数的代码加载到虚拟内存的哪个位置。...4003f0这个位置其实对应一段代码的起始地址,这段代码的作用是从.got.plt段里面取出一个数值作为下一步跳转的地址,然后通过Jmp跳转到取出地址所在位置,将程序控制权交给那里的代码。...除了.got.plt段外,还需要理解的是.got段,后者的作用主要在于访问共享代码库到处的变量。两者区别在于.got.plt段包含了代码,而.got段会直接包含共享库到处的变量地址而不是包含代码。...我们再看其他一些重要的段。在后面二进制分析中,我们还需了解.rel.或.rela.这类重定向段。他们的类型属于SHT_RELA,这些段的作用在于帮助链接器实现代码重定向。

    2.9K20

    同事看了我的代码惊呼:居然是这么在Unity中用单例的

    ❤ 一、前言 今天,同事问我:“在Unity中怎么用单例呀” 然后我就把我写的代码甩过去了。...同事:“哦,原来是这么用的,你来给我演示一下吧” ❤ 二、单例模式介绍 首先要了解,单例模式是一种常用的软件设计模式,定义是单例对象的类只能允许一个实例存在,在许多时候整个系统只需要拥有一个全局对象...单例模式的结构图如下图所示: 那么,单例模式在Unity中又有那些应用场景呢: 1、在使用Unity开发项目的时候,经常会遇到需要一个管理类来管理一些全局的变量和方法,比如GameManager...假设有以下需求: 1、整个项目中有且只有一个DataManager单例对象 2、在DataManager单例对象中,需要去读取文档的数据,并且保存下载 3、在切换场景的时候DataManager对象不能被销毁...4、在不同的脚本中可以读取到DataManager单例对象读取的值 下面我们就来一步步实现单例对象下的DataManager。

    1.2K10

    python3百度指数抓取 前言:代码在我的github上面:

    install pyocr selenium2.45 Chrome47.0.2526.106 m or Firebox32.0.1 chromedriver.exe 图像识别验证码请参考我的博客...: python图像识别--验证码 selenium用法请参考我的博客: python之selenium 进入百度指数需要登陆,登陆的账号密码写在文本account里面: ?...登陆过后需要打开新的窗口,也就是打开百度指数,并且切换窗口,在selenium用: # 新开一个窗口,通过执行js来新开一个窗口 js = 'window.open("http://index.baidu.com...下面的思路就是: 将整个屏幕截图下来 打开截图用上面得到的这个坐标rangle进行裁剪 但是最后裁剪出来的是上面的那个黑框,我想要的效果是: ?...代码在我的github上面: TTyb

    1.5K30

    我,开发者,在元宇宙里有一行自己的代码!

    但对研究者而言,想要上手研究扩展现实领域,还需要耗费不少时间、精力去解决繁琐的环境配置、不同代码库的底层规范以及代码库之间串接的问题。...从整体上看,XR领域的底层有各式各样的传感器和不同的操作系统,上层有丰富的应用比如AR/VR、数字孪生、数字人等等,OpenXRLab致力于在底层的硬件和上层的操作系统间架起一座桥梁,供研究员方便迭代新的算法...作为AR领域的基础设施,团队提供了在iPhone端可实时交互的移动端应用。...XRLocalization采用模块化的设计,并提供了一套层次化视觉定位算法,使其能够在大尺度场景下实现高效、精准且鲁棒的定位。...团队表示,欢迎任何形式的贡献,可以在wishlist中添加想要复现的算法,可以在issue中报告问题,也可以PR提交修改,甚至还可以加入他们。

    95730

    在别人写的代码上做修改我是这样保证正确性

    9年来我再也没有接手可以毫无负担,直接推倒重写的代码。就算有,不搞清楚以前的逻辑和背景,就直接抛掉这些历史包袱是不对的。在修改别人写的代码的时候,我们需要信奉黑格尔的名言:“存在即合理”。...一定要弄清楚之前这样编写代码是出于什么样的考虑。 项目背景 这段时间我们团队在修改之前的一个功能。在我接触到这个项目的时候,设计方案已经被讨论了多次,已经到了详细设计的阶段。...在我视角需求是这样的:就是一个查询接口的改造,改造前代码逻辑被前人做复杂了,这次一些从下游拿数据来拼接返回值的逻辑可以改成从下游(数据基础服务)简单取部分数据,另外一部分写死。...其实我想说:“治学三境界了解一下”,但是想想为这句话我要解释两分钟诗词,在述职评分现场,肉眼可见的在拽,岂不是在给自己减分。所以我选择了沉默。这里自己的地盘提一嘴。...编写代码 在写代码之初,自认对代码做了深入的分析,加上15年代码编写经验,觉得自己写这段代码岂不是降维打击。结果代码提交之后,真的是被打击了。Code Review同学直接在群里说给我找出来7个问题。

    1.7K20

    Jeff Dean的激荡人生:我和Sanjay在同一台电脑上写代码

    「在 D.E.C. 工作的时候,我经常从我的实验室走两个街区去他的实验室,」Jeff 说道,「路上有家冰淇淋店。」 「是有家冰淇淋店!」Sanjay 高兴地说道。...在 MIT,他的研究生导师是 Barbara Liskov,这是一位有影响力的计算机科学家,研究复杂代码库的管理。在她看来,最好的代码就像是一篇好文章。它需要一个精心实现的结构,每个词都应该起作用。...它还意味着不仅要将代码视为达到目的的手段,也要把它作为工艺品。「我认为 Sanjay 最擅长的是设计系统,」Craig Silverstein 说。...「Sanjay 的代码风格恰好处于两者之间,读他的代码能很容易理解,同时也能获取足够的信息。」Silverstein 继续说,「无论我想在 Sanjay 的代码中添加什么函数,都似乎是水到渠成的事情。...Sanjay 的 Mead 笔记本放在电脑旁边。 「好了,我们在干什么?」Sanjay 问道。 「我想我们正在思考 TensorFlow Lite 的代码 size。」Jeff 说道。

    1.6K10

    拒绝成为时代的旁观者:2025,我在代码与文字中寻找 AI 时代的“杠杆”

    “如果不会写代码,那就出书、写博客、做视频、录播客”我作为CS专业的学生,代码是会写一点的,但我还是接触了后面后面纳瓦尔所列举的事情。...我在今年可以说是只听了罗永浩的播客,这个图是在小宇宙中的时间累计,但实际上几乎《罗永浩的十字路口》这个专栏所有的节目我都听过或者看过了,还有些时长是在其他平台。...这句话直接戳穿了观点:“伪学习”是无用的Talkischeap也进一步说明写博客对于一个技术人的帮助是很大的,因为写博客既可以防止伪学习,在写一篇博客的时候会将真实的代码复现进行思考,然后讲解。...我作为学生,本身就没有什么代码工作量,所以对我来说,和编程小白也没区别,但也不是完全没有区别,我认为我在软件工程以及CS基础方面的知识使我在VibeCoding中有变得更高效,不是盲目的Vibe。...今年我几乎百分之九十多的代码都是AI写的,写了一些小工具和自己的一些小创意,也都开源了:紫微知道Github:https://github.com/ruijayfeng/ziwei这是我最近年末才做的一个算卦平台

    17920

    规则换了没关系,照样优雅的查看答案

    又到了全新的一个学期,又迎来了全新的学习。三篇教程似乎在全新的单元上不起作用。基于他们的要求,我又去重新寻找新的方法。...在经过了近20分钟的寻找,我最终找到了一个全新的方法完美解决了问题,请看以下视频。 高清视频地址 : https://v.qq.com/iframe/player.html?...d1334a7qhkk&auto=0&tiny=0 流量不足请看以下介绍: 首先打开单元界面,注意:此处不要直接打开具体练习 ; 在此处点击右键,选择“检查”,当然,也可以按“F12”; 点击跳出来的界面右上角的...“Network”; 此时再点击你要做的练习; 本来空着的右侧这时候便会多出一串文件,我们只需点击“initPage.php”这个文件就好了; 在出现的一串代码中,我们可以看到key这一行,旁边的就是答案...; 当做完这一题之后,点击next进入下一个界面是“Netwok”那一栏中又会多出一些文件,继续点击新出现的“Network”就是新的题目的答案。

    1.2K10

    显示隐藏高德地图点标注的文本标签「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。...@[显示隐藏高德地图点标注的文本标签] 效果如图 如下代码是百度地图通用的方法,显示隐藏文本标签,但是用在高德地图上不起作用,网上百度无果 hideMarkTitle: function(...,而后如果想显示文本标签,就将地图上的点标注全部移除,重新调用一遍地图插入点标注的方法(this.fetchState()),虽然阿解决了目前的需求,但是感觉这样不太好,如果地图上的点标注过多,可能会导致...this.map.remove(this.markers); this.fetchState(); } }, 新手小白程序员,欢迎各位大佬带带我,...有什么好方法或者有问题可以联系我!!!

    3.4K20

    Cypress系列(81)- clearCookie() 命令详解

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 作用 清除指定名称的 Cookie 前言重点知识...Cypress 会在每次测试前自动清除所有 Cookie,以防止在测试用例之间共享状态 除非在测试用例中需要调用此命令清除某个 Cookie,否则不需要使用该命令 语法格式 cy.clearCookie...timeout:命令超时时间 正确用法 // 清除 token 这个 Cookie cy.clearCookie('token') 命令返回结果 返回 null 重点:该命令后面不能再链接其他命令 实际栗子 代码...have.property', 'value', '123ABC') // 清除 Cookie cy.clearCookie('token') cy.getCookie...('token') .should('be.null') }) }) 可以使用 .should('be.null') 判断某 Cookie 是空的 运行结果 ?

    45520

    dedecms v5.7 sp2前台任意用户登录(包括管理员)

    新建账户是需要审核的,我在本地搭建的,所以直接在数据库里做了一下修改) 登录我们的账户 ?...mark 这个函数作用大概就是更具输入的key值,获取cookie中相应的值(我标记出来的地方是重点) GetNum(include\memberlogin.class.php): /** *...我们把目光聚焦在getcookie函数我标出来的部分,那个判断本意是想要防止别人直接通过更改DedeUserID登录别人的账号(希望没人说错),加了刚刚那个判断语句,我们不仅仅需要DedeUserID的值...我们从index.php的141行开始,有这么一段代码 ?...mark 上面的代码中的last_id就是最后一个访问你的用户的id,来源如下: $last_vid = GetCookie('last_vid'); 上面的代码逻辑就是,如果你的空间还没有访客,那么

    2.7K10

    关于PHP缓冲控制在IE浏览器下的应用

    最近写程序的时候遇到一个问题,就是我用PHP控制浏览器缓冲,试了N次都无法实现想要的效果,具体程序见下面的代码: 的个别版本上不起作用。...于是我用FireFox浏览器试了一下,果然立即出现了想要的效果,我的浏览器是IE6,经过查阅相关资料,得知,IE的某些版本只有在字符串缓冲到256字节的时候才会将缓冲内容输出到浏览器上。...根据这个特点,我修改了一下程序,结果得到了预期的效果,具体代码如下: <?php for ($i=0; $i<10; $i++) { echo ""....这个问题让我捣鼓了2个多小时,该死的微软!!! 经验不敢独享,贴上来和各位一起分享,希望在大家的开发过程中如果遇到类似问题可以帮上忙!

    1.7K10

    WordPress记住评论用户信息的js版本,直接操作cookie无视缓存

    这两天一直在折腾博客的评论功能,原因是开启了百度云加速的 html 缓存,导致原有的记住评论者信息的功能失效了,每次刷新文章页面,用户信息都会清空。...下面分享这个 js 代码,补充 WordPress 在缓存处理方面的不足: 先前置说明一下,此 js 主要用于解决 WordPress 在百度云加速等 CDN 缓存开启下无法保存用户信息的问题,省的某些人不仔细看内容就别说啥...②、修改 comments.php 编辑主题的 comments.php 文件,找到提交留言的按钮代码,在合适的位置添加勾选框: 的,将如下代码保存为 saveinfo.js,并上传到主题目录: function getCookie(c_info){ if (document.cookie.length>0){ c_start...>/saveinfo.js"> ③、修改 comments.php 编辑主题的 comments.php 文件,找到提交留言的按钮代码,在合适的位置添加勾选框: <input type

    2.1K50
    领券