Contract-Design
合約間呼叫的成本是多少?
我與創建項目並將它們添加到類別的方法簽訂了契約。
我想創建一個包裝契約,將多個呼叫合併為一個:創建一個項目並將其添加到一個呼叫中的多個類別中。
呼叫包裝器而不是直接呼叫基礎合約的大概價格是多少?
如果要將創建的項目添加到的類別數為零,請幫助我確定是否值得直接呼叫基本契約而不是包裝契約。
案例 1:創建項目並將其添加到類別 11 和 17。
案例 2:創建項目而不是將其添加到類別中。
簡短的回答:
它大約是執行所有呼叫函式的成本加上執行包裝器的成本的總和,其中包括打包和解包函式參數的少量氣體支出。
更好的答案:
成本差異並不嚴重。該決定可能應該基於您的預期流量和其他因素。例如,如果您需要多個操作作為原子事務來完成,那麼包裝器與目標函式的訪問控制(例如 onlyWrapper)相結合,以確保各個函式不被任何其他程序呼叫。
當然,您可以使用它來觀察成本並確認您的發現與預期相符。給定兩個目標 A & B 和一個 Wrapper,成本應該是:
cost A + cost B + cost Wrapper
合約的作用主要是維護系統的內部完整性和執行規則。
- 外部實體可以單獨呼叫A 或 B*嗎?*這是使用契約的有效方式嗎?
- A 和 B 應該總是一起叫嗎?
- 有時一起呼叫 A 和 B 是否有用,但不是嚴格要求?
在執行時成本大致相同的相應實現:
- 讓使用者呼叫 A 或 B
- 強制使用者呼叫 Wrapper
- 讓使用者呼叫 A、B 或 Wrapper
希望能幫助到你。