程序优化杂谈——前言

M2DGR数据集在一些SLAM框架上的配置与运行:ORB-SLAM系列、VINS-Mono、LOAM系列、FAST-LIO系列、hdl_graph_slam 为了说明以上这些SLAM框架的测试与数据集适配,以M2DGR数据集为例进行各自的配置与运行,方便我以后适配自己的数据集,运行的SLAM框架包括:ORB-SLAM2、ORB-SLAM3、VINS-Mono、A-LOAM、LeGO-LOAM、LIO-SAM、LVI-SAM、FAST-LIO2、FAST-LIVO、Faster-LIO、hdl_graph_slam。实验基于Ubuntu20.04,其中ORB、VINS-Mono、和LOAM系列的安装参考我以前的博客,有详细的安装方法,其他的框架在后面会简单介绍一下 阅读详情
程序优化杂谈——前言

( 作者:mikespook | 发布日期:2003-4-13 | 浏览次数:95 )

关键字:程序,优化
  关于程序优化,是从计算机出现以来一个长久的话题。早期计算机由于运算速度慢、存储容量小,程序员不得不一遍又一遍的研究算法、优化程序。但随着计算机硬件的发展,我们现在可以奢侈的写着程序,而不考虑这些代码是不是太慢,或者是不是太大。而且,随着编译技术的不断进步,也减轻了程序员在程序优化方面的工作量。传闻,某编译器编译时,某些情况下可达到1:1的高级语言到机器指令的转化。这可真是在代码海洋中苦苦挣扎的程序员的福音,不用再考虑优化,而将所有优化工作交给编译器来完成。
  但真得是这样么?技术的进步真得可以代替人工操作的程序优化么?
  经常听到“高手”很得意的拿着自己又慢又大的程序对“菜鸟”说:“看,我的程序的framework多棒。”每次听到这话,我就想对这些代码说:“Sh*t!”(我倒是不敢对高手说,毕竟技不如人。^@^)我是个老菜鸟了,不懂什么framework,不过这种又慢又大的程序绝对不是我想要的。
  所以我决定从我的雕虫小技中整理出来这么一些东西和大家分享。希望这些劣质的技巧能对你有一点帮助,而不是浪费你的时间。我还是觉得不论别的东西怎么样,写出速度快,占用空间少的代码是每个优秀的程序员应具有的基本素质之一。
  我可能会不定期的做一些整理给大家发出来。但是关于这些文章的名字又让我为难了。程序优化不光是在代码级上,还有整体结构设计与编译器技术。所以这些文章或许叫做代码优化更合适一些。但也许在以后,等自己的水平有所提高的时候(至少弄清楚什么叫framework ^$^),会加入关于更高级的方面的讨论。
因为是雕虫小技,所以我想对适合阅读本文章的朋友给一些建议。(暂时只是针对代码优化)
不适合阅读这些文章的朋友:
为了不让你们看废话浪费时间,先看这个。
1.刚开始接触编程的朋友
  文章中大量应用到各种小技巧,如果你刚开始学习编程,我还是建议你先打好基础。再来体会这些“怪异”技巧的微妙之处。
2.做系统分析、架构设计的朋友
  因为水平有限,所以我这里所说的优化是在代码级进行的。对于系统分析、架构设计毫无用处。不要在这些上面浪费你的时间。
3.相信优化是不必要的,或者认为优化应该交由编译器完成的朋友
  相信我,这绝对不是你想看的。我不会讨论优化的必要性,也不会介绍任何利用编译器特性进行优化的内容。这些技巧除了把你漂亮代码弄乱,其他什么帮助也不会有的。你最好还是看看编译器手册。
我希望下面的朋友能看看这些文章:
1.所有感觉无法再忍受自己那奇慢无比的代码,又不知从何可以让它运行得更快的朋友
  你应该能通过阅读这些文章尝试修改自己的代码,让他们运行在一个你能接受的速度下。
2.所有对代码级优化有所心得的朋友
  我不认为你会从这些劣质的技巧中有所收获。我只是希望你能阅读它们,并指出其中的错误与不足,让我能有一个更大的进步。
关于如何阅读这些文章,我想那是你自己的事情。不过我还是说说我的看法,仅供参考。
1.我这里所说的不是方法,而是一种想法、一种思路(得,我没那么大本事,所以不敢自称思想。不过说是想法应该没人有意见吧?)。如果你能从其中有所收获,也应该是体会这些想法。举一反三。应用到你的程序中去。
2.每篇文章我都会给出例子程序,不一定是什么语言写的。只是为了更好的说明问题。可看,可不看。
3.我在文章中会提到一些我认为应该看的书。因为有一些概念性的东西我不会浪费时间,在这里再抄一遍概念(我又不是写那种摆在新华书店卖的书,所以我没必要抄来抄去的。)。所以如果你遇到不清楚的地方,应该去看这些书,而不是来问我。
好了废话就写这么多,以后的文章中我就不说这些废话了。^$^
华为OD机试 双机位A卷 - 流量波峰 (C++ & Python & JAVA & JS & GO) 华为OD机试双机位A卷 流量波峰,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解 阅读详情

相关推荐

工业级越界行为识别数据集:YOLOv8/v9直接训练的围栏异常检测资源

越界行为识别是智能安防与工业安全中的基础视觉任务,其核心在于对人员、车辆等目标跨越物理边界(如围栏、警戒线、作业禁区)的精准检测与分割。该技术依赖于高质量实例分割标注、归一化坐标格式及场景鲁棒性设计,具备低延迟、高召回、强泛化等工程价值,广泛应用于智慧工地电子围栏、化工厂禁区告警、物流园区越界监控及变电站安全巡检等真实工业场景。本数据集以YOLOv8/v9为基准构建,提供万张实拍+合成图像、像素级Segmentation标注、分层划分与完备元数据,开箱即用,直击工业落地中数据清洗、格式转换与标注不一致等关键

weixin_30080745的博客 317

Python+OpenGL 杂谈

Qt是非常优秀的C++图形界面框架,面相对象的设计,可以跨平台,操持C语言和Python语言的人,用Python + Qt组合是非常不错的选择,而且PyQt5对OpenGL有很好的整合,非常稳定。

weixin_42377388的博客 1569

AD5700 HART芯片实战笔记:从时钟检测到数据收发,一个STM32工程师的踩坑实录

本文详细记录了STM32工程师在AD5700 HART芯片开发中的实战经验,涵盖时钟信号检测、RTS切换时序优化及HART数据解析等关键问题。通过硬件设计检查、定时器配置优化和大小端转换方案对比,解决了工业级芯片开发中的典型挑战,为嵌入式开发者提供宝贵参考。

weixin_42715608的博客 164

杂谈WebApiClient的性能优化

前言搜小说 https://xiagu.org/ WebApiClient的netcoreapp版本的开发已接近尾声,最后的进攻方向是性能的压榨,我把我所做性能优化的过程介绍给大家,大家可以依葫芦画瓢,应用到自己的实际项目中,提高程序的性能。 总体成果展示 使用MockResponseHandler消除真实http请求,原生HttpClient、WebApiClientCore和Refit的性能参考: BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18362.8...

keocce的博客 761

LVGL高效加载外部Flash图片资源的实现与优化

本文深入探讨了在嵌入式UI开发中,如何为LVGL高效加载外部Flash中的图片资源。针对内部Flash容量不足的痛点,详细解析了LVGL的图片处理原理,并对比了内存映射与流式解码两种主流实现方案。文章重点提供了性能优化技巧与实战避坑指南,旨在帮助开发者实现流畅的图片加载体验,解决SPI Flash读取慢、内存占用高等核心挑战。

t1u2v的博客 462

AICodeing:AI驱动的全栈开发革命

作为阿里/字节跳动的资深Java工程师,我们正站在研发效能革命的临界点上。本文将深入探讨如何利用AI技术重构全栈开发流程,实现从需求到上线的量子级提速。

weixin_43290370的博客 1136

线程杂谈3

(************************************************(* Subject:   线程杂谈3(* Author: linzhenqun(风)(* Time:      2006-3-25(* Blog:      http://blog.youkuaiyun.com/linzhengqun(* E-mail: linzhengqun@163.co

colin 2992

Flutter 直接调用so动态库,或调用C/C++源文件内函数

我把 .so 文件尝试放过好几个目录/lib/,最终都会报这个错误,现在才知道库文件需要放在你根本想象不到的地方!!!尝试了一些方法还是不行后我放弃了 ffi,想着用 Flutter 的 MethodChannel 桥接 android/ios 原生,再让原生去调 native 层。一顿操作把Android端的搞定了,当然中间涉及到 Kotlin和C++ 层的数据类型映射的痛苦,而且业务函数也不像一个 helloworld 那么简单,别提有多痛苦了。

开发以大橘为重 8352

编程杂谈,你关注过你编写的程序的运行效率吗?

CMD的高位Byte的最高位bit需要分离出来解析成一个单独的bool值型的字段NeedWait。消息的前四位是包长度,占用4byte的uint。标记这次指令的ID,通常用于超时判断(响应时依据发送者指令的最后4字节作为回复,发送时生成不重复的4个字节)笔者本认为这就是一个无关紧要的改动,但是Benchmark的结果,令笔者十分震惊。我们取消了两个using,这样就不会有gc的操作,然后使用了最原始的刀耕火种般的位运算操作。这种顺序可能更符合CPU缓存行的预取机制,减少了内存访问的随机性,从而提升性能。

dotNET跨平台 90

ADS2020与SystemVue2020Update1.0同机安装避坑指南:解决License冲突,实现EVM联合仿真

本文详细介绍了ADS2020与SystemVue2020 Update1.0同机安装的完整解决方案,重点解决License冲突问题,实现EVM联合仿真。通过合理的安装顺序、路径规划和License服务配置,确保两款EDA工具和谐共存,为射频与微波电路设计提供高效仿真环境。

weixin_30271335的博客 348

linux内核协议栈 TCP选项之SACK选项概述

目录 1SACK概述 1.1 SACK允许选项 1.2 SACK选项 2SACK允许选项的发送 2.1 SYN段发送 2.2 接收SYN段 2.2.1 struct tcp_options_received 2.2.2 tcp_parse_options() 2.3 发送SYN+ACK段 3D-SACK 1SACK概述 标准的TCP确认机制中,如果发送方发送了0-1000序号之间的数据,接收方收到了0-100、300-1000,那么接收方只能向发送方确认101,这时发送方会重...

2732

DNS的解析杂谈,以及gethostbyname的弊端

1、前言: 在网络编程中,常常要使用域名转换为IP的操作,这个时候就需要用到域名解析。域名解析是一个垂直请求的过程,具体如下图。 2、gethostbyname的性能瓶颈 Unix/Linux下的gethostbyname函数常用来向DNS查询一个域名的IP地址。 由于DNS的递归查询,常常会发生gethostbyname函数在查询一个域名时严重超时。而该函数又不能像c

滴水石穿 术业专攻 3万+

PDBfixer:蛋白质结构修复工具

本文介绍蛋白质数据银行(PDB)文件常见问题及修复工具PDBFixer的使用方法。PDB文件常存在缺失原子、残基等问题,PDBFixer可通过GUI、命令行或Python API实现自动化修复。文章详细说明安装方法、命令行参数、Python脚本修复流程及非标准残基替换表,并与Modeller、ColabFold和Rosetta Remodel等其他修复工具进行对比分析,提供了各工具的特点、适用场景和典型计算时间比较,帮助用户根据具体需求选择合适的修复工具。

Protein Designer的博客 612

程序员内部培训与个人发展杂谈

程序员内部培训与个人发展杂谈 标签: 培训个人发展职业生涯规划 2017-07-18 17:16 2563人阅读 评论(6) 收藏 举报 分类: 管理(15) 作者同类文章X 版权声明:转载请注明出处:http://blog.youkuaiyun.com/hursing 目录(?)[+] 前言培训的发

jjff46的专栏 881

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

一个程序员的无聊感慨杂谈

前言 时光荏苒,白驹过隙。从今年四月底,因疫情影响前公司拖欠薪资被迫离职,来到现在的公司已经小半年了。个人工作能力方面也有了新的提升和感悟,但由于近期公司项目对于H5游戏这方面的需求延期,自己每天的工作内容基本就是等需求、优化游戏框架、修复和优化产品经理反馈的问题、看引擎文档。 就像论坛里说的:‘对程序员来说,最痛苦的不是加班赶需求;而是每天无所事事,枯坐一整天才是最难熬的’!而我自己,已然处于这个状态,虽然每天都在提醒自己,安逸的工作就像温水煮青蛙,要时刻警醒,尽可能的给自己安排每天要自学的东西,但技术文

Mr_JiaTao的博客 1358

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

杂谈之code review

一. 前言   本文有感于大佬不厌其烦多次的code review,确实让人受益良多,颇多感激难以言语表达,只能默默记在心里。本文将从写代码和帮别人过代码两个角度来记录感悟,希望对大家都能有所帮助。 二. Show leader the code   对程序员来说,代码就是自己的名片,也是自己的最好证明,所以一定要对代码有所追求。套用某部YY小说里的一句台词:“世界上没有纯净的铁,只有发现不了杂质的人”,追求代码的完美是毕生的事。 关于代码规范,该部分属于程序员基本素养,但是绝大多数人做的都不算好。细谈

ty的博客 558

继承杂谈。

继承杂谈

qq_75270497的博客 1118

STM32 HAL库开发转固件库开发杂谈

STM32 最早提供固件库开发,在当时也是一个很大的创新。导致大量攻城狮熟悉了固件库开发,后面STM32又慢慢推出HAL开发模式,这种开发模式是开发过程更高效便捷,但是最大的缺点就是效率。其实熟悉STM32的开发人员,可以将HAL库转为固件库开发方式,这里以串口为例提供一点自己的看法。历经STM32从寄存器到固件库到hal库开发过程,这个过程还是有很多感触的。

大牛攻城狮的专栏 1080

Linux 【杂谈】基础知识(一)

本文主要是讲解在Linux指令阶段,一些比较重要的是又比较琐碎的相关知识。本文对标的是【Linux 第一讲 --- 基础指令(一)】中出现的新名词,新概念但又于指令部分关联不深的内容。

hi0_6的博客 1553

MVC架构杂谈

本文作者:伯乐在线-林欣达。未经作者许可,禁止转载! 欢迎加入伯乐在线专栏作者。 前言 MVC是软件工程中的一种软件架构模式,它把软件系统分为三个基本的部分:模型Model、视图View以及控制器Controller。这种模式的目的是为了实现一种动态的程序设计,简化后续对软件系...

chunqingtai2922的博客 175

2年工作经验杂谈(java开发)

前言 个人介绍 本人不是985/211,普通本科,通信专业,成绩挺好不是最拔尖算得上中等偏上,好吧我觉得可能是上吧,党员。 在毕业后在厦门一家公司实习后加入工作,工资中等,公司规模300-500,团队8-30人。 与理想的薪资待遇有偏差,当然自己的能力有偏差。 两年来工作路线 入职小白-》 高效下手-》 初级程序员-》 核心研发、中级-》 技术组长、技术主管(短暂) 两年来学习路线...

Mars 4979

【杂谈理解】STM32F103引脚反转速度时间

事情的起因是最近我在使用F103编写WS2812彩灯的时序时遇到了一些小问题。具体来说,我发现WS2812的'1'码的低电平部分的时序无法达到要求的220ns~380ns,而只能到大约580ns左右。因此,我开始对引脚的反转速度进行了一些测试。下面数据仅是我通过逻辑分析仪检测,如有偏差或错误的地方欢迎指出。

m0_60313295的博客 1250
上一篇: 程序优化杂谈——最优二叉树在程序中的应用
下一篇: 图解Windows98安装
mikespook
博客等级 码龄25年 72粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值