我正在解碼來自二進制流的通信消息。我根據消息到達的情況創建不同類型的消息對象。它們都來自基地CommsMessage
類型。所有的罰款和花花公子。類型比較的性能成本
在我的代碼中的其他地方,我需要對這些消息作出反應,所以我需要知道它是什麼類型的消息。
目前我做的:
void ProcessIncomingMessage(CommsMessage msg)
{
if (msg is MessageType1)
return ProcessMessageType1(msg as MessageType1);
if (msg is MessageType2)
return ProcessMessageType2(msg as MessageType2);
//etc
}
我想知道什麼比較這些類型的性能代價是,是否我應該包括在基類MessageType
屬性。然後,我可以這樣做:
void ProcessIncomingMessage(CommsMessage msg)
{
switch (msg.MessageType)
{
case MessageType.Type1: return ProcessMessageType1(msg as MessageType1);
case MessageType.Type2: return ProcessMessageType2(msg as MessageType2);
//etc
}
}
是的,這是不成熟的優化,我可能擔心在不起眼的細節,但我是那種編碼器誰喜歡知道發生了什麼事情在幕後,所以是想知道兩者之間的表現差異。我想我對我的C++背景中的類型比較有偏見,RTTI引入了開銷,只是想知道.Net是否有任何相似之處。
的可能重複[C# '是' 經營者業績(http://stackoverflow.com/questions/686412/c-sharp-is-operator-performance) –