對於定義像(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. 在C中,ARM編譯器如何優化這個結構?
- 9. Intel OpenCL編譯器:優化結構使用
- 10. 編譯器優化重複類
- 11. Java編譯器優化
- 12. 編譯器優化問題
- 13. 編譯器謂語優化
- 14. Requirejs優化器不編譯
- 15. 二郎編譯器優化
- 16. 編譯器優化實現
- 17. C++編譯器優化
- 18. 優化類結構在C++
- 19. 體系結構x86_64的未定義符號 - 編譯繼承類
- 20. 是由編譯器優化的類上的硬編碼數組?
- 21. 奇怪的編譯速度優化的結果 - IAR編譯
- 22. iPhone編譯架構:標準VS優化
- 23. 編譯錯誤「‘結構’類型定義」雖然這是它
- 24. 我可以讓編譯器優化結構中的函數調用嗎?
- 25. 插件編譯器結構?
- 26. 調試期間的編譯器優化
- 27. 由編譯器優化的變量
- 28. 的std ::移動與編譯器優化
- 29. 函數參數的編譯器優化
- 30. Ivy Bridge架構的GNU Fortran編譯器優化標記
對編譯器優化的影響?誰知道?這取決於運行時,編譯器,編譯器設置,程序......如果您使用CLOS,則槽可以解除綁定,這可能表明該時間未知。 –