明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 262|回复: 3

[运行时] Debug技巧

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 你有种再说一遍 于 2025-1-18 17:01 编辑

单步断点调试是一种低效的调试方法
https://v.douyin.com/63AhMwTyDLg

其实我和这个文章观点一致,
只要一直看代码,代码就会告诉你哪里出问题了.
因为除了语法需要编译器检查之后,
最重要是数据结构的顺序,以及流程顺序.

如果不这样,会怎么样,你会穷尽一切猜想.
当然,如果你用Rust,那么编译器教你做人...

盯着代码看的时候,你需要想什么?
这个结构是否有序?
有序的话是否可以二分?是否可以构造Map?
内存是否释放?
是否线程不安全?
是否可以转为SOA+SIMD来进行加速?
....
回复

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
优化分为极限优化和工作流优化,
什么是极限?例如把边界检查移除这种就很极限.
什么叫工作流?例如开启并行切割数据,这种是必须要做的.

实际上因为业务复杂性,
导致了复杂问题必然有复杂的解决方案.
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2025-1-18 20:17 编辑

多用Linq的函数,例如:
var ent = ents.FirstOrDefault(a => a.ColorIndex == 1);
if(ent is null) return;

目的是找到第一个满足条件的,就结束.
list的First比FirstOrDefault性能高一点,而且找不到也是为空.
但是只需要常用的就行,
你不再需要写for才是关键,
减少写for能够更方便了解业务,而不是数据.

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-1-22 21:46 , Processed in 0.262012 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表