2
我應該公開一些我的班級數據,但它有望在要求非常高的生產力領域工作,所以很自然地我想知道,這樣做的最佳方式是:遵循設計原則並通過屬性進行此次博覽會,或者忘記它,只是公開我的數據?D中屬性的開銷是多少?
我應該公開一些我的班級數據,但它有望在要求非常高的生產力領域工作,所以很自然地我想知道,這樣做的最佳方式是:遵循設計原則並通過屬性進行此次博覽會,或者忘記它,只是公開我的數據?D中屬性的開銷是多少?
一個屬性是一個函數調用,但它通常是一個可以內聯的微不足道的....至少只要它是最終的,並且您使用正確的編譯器設置(gdc -O或ldc的優化.a快速測試顯示我dmd -inline確實不是內嵌它!)。
所以現在,如果你使用gdc或ldc,最終的屬性是免費的,因爲它將被內聯和優化。虛擬財產功能我不確定。如果你使用的是dmd,那麼函數調用的代價很小,所以如果它是一個緊密的循環,你可能會得到一個公共字段的加速。
它在公共「接口」的庫代碼中有意義。 D Exe不能被鏈接,所以沒有接口被破壞。在D中,你主要使用靜態鏈接(使用所有源代碼來編譯一個二進制blob),所以沒有太多理由來包裝數據訪問 - 編譯器會在發生故障時發出抱怨。只有當問題出現在我的腦海裏時,可能會有不同的表現,那就是在處理數據成員與功能/屬性時的地址。 –