对于定义像(defstruct person (age nil :type (or null integer)))
和(defstruct person (age -1 :type integer))
这样的Common Lisp结构(或类),编译器优化的潜在影响是什么?我经常发现使用第一种形式表示方便的空值表示特殊条件;例如,如果一个人的年龄不知道。但在第二种形式中,您也可以使用特定的指定整数(如-1)来指示此情况。一种表示相对于另一种表示存在优势/劣势? (ps:在这种情况下,差异可能可以忽略不计,但似乎它可能不适用于涉及像哈希表等复杂对象的嵌套结构)。结构或类定义的编译器优化
0
A
回答
1
我认为你问的是错误的问题。
“......一个计算机语言是没有得到计算机 执行操作的只是一种方法,而是......它是 表达对方法论思想的小说正式媒体”
阿伯尔森/苏斯曼“计算机程序的结构和解释”。
您正在编写供人阅读的代码,而不仅仅是供计算机执行。 为您设计的主要驱动力应该是代码的可读性,而不是性能(尤其是时候,因为在你的情况下,对性能的影响是最容易被忽略不计):
特别是在你的情况下,如果你只有一个特殊值,和那特殊值意味着“缺失”,你可能想用defclass
你的c在defstruct
中有一个未绑定的槽位,而不是nil
槽位值。
PS。不要误会我的意思 - 性能DOES事。然而,它在可扩展性,而不是微优化。督察的重点应是
- 可扩展性(即,选择linearithmic而不是二次算法)
- 可读性/可维护性(代码结构,符号名称,注释,例如)
- 微优化(例如,Lisp代码中的类型声明)
+0
好像有很多关于优化和表示的知情意见:您的参考资料和(https://groups.google.com/forum/#!topic/comp.lang.lisp/fpEC_WubwGE)(https://例如,groups.google.com/forum/#!topic/comp.lang.lisp/ZOgTMwm3gD4)]。很多食物的思考,谢谢。 – davypough
相关问题
- 1. C编译器结构优化
- 2. 简化编译器的类结构
- 3. 编译器或定义的行为可能的优化
- 4. 构造函数的编译器优化
- 5. 编译器优化或我的误解
- 6. 编译器优化
- 7. 编译器优化
- 8. 优化类结构
- 9. 各种类型的编译器优化?
- 10. Java控制结构中的自动编译器优化?
- 11. Swift编译器优化导致冻结
- 12. 克++编译器的优化
- 13. 实例结构内部类定义生成编译器错误
- 14. 在C中,ARM编译器如何优化这个结构?
- 15. Intel OpenCL编译器:优化结构使用
- 16. 编译器优化重复类
- 17. Visual C++编译器是否优化了未定义的宏块?
- 18. GNU编译器优化
- 19. C++编译器优化
- 20. 编译器优化实现
- 21. PHP编译器优化
- 22. 编译器谓语优化
- 23. 优化css编译器
- 24. Requirejs优化器不编译
- 25. Java编译器优化
- 26. 编译器优化问题
- 27. 二郎编译器优化
- 28. 优化类结构在C++
- 29. 从类内部返回结构图(结构定义在类内):编译错误
- 30. 体系结构x86_64的未定义符号 - 编译继承类
对编译器优化的影响?谁知道?这取决于运行时,编译器,编译器设置,程序......如果您使用CLOS,则槽可以解除绑定,这可能表明该时间未知。 –