這是一個簡單的例子:
int function (int n) {
//code
}
long long function (long long n) {
//absolutely the same code but intended to work with bigger values
}
我正在考慮節省額外的記憶體(如果你將它與小型別的變數一起使用)并使其更通用(如果你將它與大型別的變數一起使用)
我希望你能明白我的想法——如果你在里面放 15 之類的東西,不要使用 long long,而是對較小的型別(如 int)使用多載。
我想我在這里遺漏了一些東西。我什至應該讓這個超載嗎?我可以在不為每個現有整數型別(short、int、long、long long ...)多載的情況下制作最通用和最優化的函式嗎?
uj5u.com熱心網友回復:
如果您正在為相當新的個人計算機或 Web 服務器撰寫代碼,那么擁有單獨的int版本可能是過早的優化,因為這些機器中的大多數無論如何都有 64 位處理器,因此使用 64 位的計算long long應該很快。
OTOH,如果您正在為 64 位算術非常慢的 8/16/32 位嵌入式系統撰寫代碼,那么這可能是值得進行的速度優化。
但它在記憶體使用方面仍然不太可能有幫助,因為重復實作一個函式會增加編譯代碼的大小,從而抵消為變數使用更少記憶體的好處。除非該函式采用可能包含數百萬個整數的陣列而不是一個整數,在這種情況下,資料大小比代碼大小更受關注。
如果您確實堅持為不同的整數大小設定多載函式,我建議使用 Ranoiaetep 將其設為template函式的建議,以避免源代碼中的重復。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/412401.html
標籤:
