编译器与系统问题对软件的影响
1. 变量初始化方式及影响
变量初始化存在不同方式,其选择取决于编程语言的定义,程序员通常无法干预。但程序员应了解不同初始化方式的优缺点,因为这可能影响编程语言的选择。例如,一种不进行初始化的方式,程序每次执行时变量值可能不同。这种方式效率高,因为无需初始化操作,但如果程序员因编程错误未给变量赋值,该错误很难被发现,可能导致难以察觉的错误。
2. 打包数据结构
- 原理与优势 :部分编程语言支持打包数据结构,像布尔类型只需 1 位表示,无需占用整个字节或字。例如,1024 个布尔变量的数组,打包后仅需 128 字节,若以字(4 字节)为基本内存访问单位,打包后只需 32 字,相比未打包节省大量空间。
- 缺点与适用场景 :但访问打包数组中的单个元素会更复杂,需要先确定元素所在的字节或字,再进行解码。这意味着使用打包结构是用时间换空间。若主存空间充足,不建议使用打包结构,因为需要评估打包和未打包结构的 I/O 管理时间,以及编码和解码的额外时间是否值得。若使用打包结构能避免虚拟内存管理(VMM),则建议打包;若打包结构仍无法装入主存,则需更仔细分析程序行为。
- 编译器问题 :部分编译器会忽略打包指令,若遇到这种情况且打包能避免 VMM,显式执行打包指令在运行时可能有优势,但会导致代码难以调试和维护。
3. 执行顺序的过度指定
多数编程语言要求程序员详细指定操作细节,而这些细节可能并非必要或有用。以矩阵加法为例,算法中可能只需简单
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



