哪個更好地訪問屬性值?訪問屬性值哪個更好?
訪問這樣
propertyobjA.objB.Prop1
propertyobjA.objB.Prop2
或分配給VAR
var objB = propertyobjA.objB;
then call objB.Prop1 and objB.Prop1
哪一個提高了C#的表現?
哪個更好地訪問屬性值?訪問屬性值哪個更好?
訪問這樣
propertyobjA.objB.Prop1
propertyobjA.objB.Prop2
或分配給VAR
var objB = propertyobjA.objB;
then call objB.Prop1 and objB.Prop1
哪一個提高了C#的表現?
對性能的影響很大程度上取決於propertyObjA.objB
屬性獲取器的實現。例如,如果它簡單實現爲:
public Foo objB { get { return this._objB; } }
然後調用兩次將會對性能產生微不足道的影響。
但是,如果相同的屬性做了一些計算成本很高的事情,那麼您的第二個建議會表現得更好。
話雖這麼說,你不應該使用屬性的getter隱藏潛在的計算昂貴的操作,而不是寧願一個方法調用,而不是指導原則框架狀態,例如:
public objB ComputeB();
爲了完全誠實,答案很可能是第二個會更快,但我幾乎可以保證它不會影響絲毫。您應該小心過早考慮優化問題。所有性能問題中的99%都歸結爲更大的問題,例如頻繁訪問數據庫等,而不是像這樣的小問題。即使這兩種情況之間存在細微的差異,除非這是這個星球上最重要的軟件之一,但重要的是可讀性(在這種情況下並不難讀),而不是更快。
這取決於objB是什麼。如果你正在計算的東西(你不應該做但可以做),那麼當然分配它的值將產生更好的性能。
另外需要注意的是,你應該避免依賴於變量的子屬性,因爲你在類之間加入了更高的耦合度。
我認爲這不會在性能上產生很大的差異(第二種選擇可能會快一點)。但這不是你的表現問題(如果有的話)的來源。
UPDATE:有關的propertyobjA.objB
價值可能越來越Prop1
和Prop2
之間變化,所以兩個備選方案不能被視爲是相同的代碼的思考。
你真的應該不關心自己與像使用c#這樣的高級語言編寫代碼時就是這樣的。
諸如c#和java之類的語言的現代編譯器非常複雜,並且會對您的代碼執行各種優化。作爲開發人員的最終結果是,在編寫特定的一小段代碼時,您永遠不會看到性能上的差異。編譯器會選擇最優化的方式。
其他一切都是根據偏好。如果你想鏈接幾個屬性訪問,那很好。如果您想將中間結果分配給變量以提高代碼的可讀性,那也可以。
通常的方法是每個案例的時間,看看哪個更快。另外,不成熟的優化是所有邪惡的根源。 – dandan78 2012-08-16 14:41:26
找出方法是測試兩者。 – Oded 2012-08-16 14:42:43