Checked LINQ queries and collections for inefficiencies.
- Made Array.IndexOf available via extension method. - Made ToHashSet extension method. - Change collections queried often via Contains into sets. - Avoid Count() extension if Count or Length property exist. - Made Count() > 0 checks and variations calls to Any() instead. - Don't call ToList/ToArray if there is no benefit to materializing the sequence. - If the sequence does benefit from materialization, follow this general pattern: - Collection queried often via Contains use ToHashSet to speed up lookups. - Short lived variables use ToList. This is because ToArray requires an extra copy to output the final size. - Collections persisted into fields or for a long time use ToArray to minimize memory overhead.
This commit is contained in:
committed by
RoosterDragon
parent
f5f3747338
commit
82bea961ba
@@ -37,7 +37,7 @@ namespace OpenRA.Orders
|
||||
var orders = world.Selection.Actors
|
||||
.Select(a => OrderForUnit(a, target, mi))
|
||||
.Where(o => o != null)
|
||||
.ToArray();
|
||||
.ToList();
|
||||
|
||||
var actorsInvolved = orders.Select(o => o.Actor).Distinct();
|
||||
if (actorsInvolved.Any())
|
||||
@@ -81,8 +81,7 @@ namespace OpenRA.Orders
|
||||
|
||||
var orders = world.Selection.Actors
|
||||
.Select(a => OrderForUnit(a, target, mi))
|
||||
.Where(o => o != null)
|
||||
.ToArray();
|
||||
.Where(o => o != null);
|
||||
|
||||
var cursorName = orders.Select(o => o.Cursor).FirstOrDefault();
|
||||
return cursorName ?? (useSelect ? "select" : "default");
|
||||
|
||||
Reference in New Issue
Block a user