簡體   English   中英

什么時候應該對 boolean 值使用位域?

[英]When should someone use bit-field on a boolean value?

我一直在研究虛幻引擎 c++ 中的一些代碼,我發現他們在 header 文件中有 4 個布爾值聲明為:

bool bIsEvaluating : 1;
bool bIsStopping : 1;
bool bIsBeginningPlay : 1;
bool bCompleteOnPostEvaluation : 1;

和一個沒有位域的 boolean:

bool bIsPlayingForward;

帶位字段的 4 個布爾值在構造函數上設置,並在某些函數上更改或使用。 沒有位域的 boolean 被設置並用於某些功能。 我的問題是什么時候有人會在布爾值上使用位域,為什么不總是在布爾值上使用它們,因為它們只采用真值或假值?

我在 Unreal Engine 中使用 boolean 值的位字段來保存 memory 並提高性能。 如果我有大量 boolean 變量,每個變量不需要一個完整字節,使用位域可以節省 memory。 訪問位域也可能比訪問完整字節更快,因為它需要更少的 memory 次訪問。 這在我需要經常訪問 boolean 值的情況下特別有用。 此外,使用位域可以更清楚地表明特定的 boolean 值應該以特定的方式使用,這可以提高我的代碼的可讀性。 然而,重要的是要注意,位域有一些限制和權衡,我很少使用它們,只有當好處超過潛在的缺點時才使用它們。

在 Unreal Engine 中,當您有特定原因時,您應該為 boolean 值使用位字段,例如保存 memory 或提高性能。 如果您沒有使用位域的特定原因,通常最好使用常規的 boolean 變量。 您還應該注意使用位域的限制和權衡,並謹慎使用它們,只有當好處超過潛在的缺點時才使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM