8000 Micro-optimization: use new List<>(capacity) · mm201/libgit2sharp@3616204 · GitHub
[go: up one dir, main page]

Skip to content

Commit 3616204

Browse files
dahlbyknulltoken
authored and< 8000 span class="pl-1">committed
Micro-optimization: use new List<>(capacity)
1 parent 935453d commit 3616204

File tree

4 files changed

+10
-11
lines changed

4 files changed

+10
-11
lines changed

LibGit2Sharp/Commit.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,20 +138,19 @@ public ParentsCollection(Repository repo, ObjectId commitId)
138138

139139
private ICollection<Commit> RetrieveParentsOfCommit(Repository repo, ObjectId commitId)
140140
{
141-
var parents = new List<Commit>();
142-
143141
using (var obj = new ObjectSafeWrapper(commitId, repo.Handle))
144142
{
145143
int parentsCount = _count.Value;
144+
var parents = new List<Commit>(parentsCount);
146145

147146
for (uint i = 0; i < parentsCount; i++)
148147
{
149148
ObjectId parentCommitId = Proxy.git_commit_parent_oid(obj.ObjectPtr, i);
150149
parents.Add(new Commit(repo, parentCommitId));
151150
}
152-
}
153151

154-
return parents;
152+
return parents;
153+
}
155154
}
156155

157156
public IEnumerator<Commit> GetEnumerator()

LibGit2Sharp/Core/Proxy.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1969,27 +1969,26 @@ private static unsafe class Libgit2UnsafeHelper
19691969
{
19701970
public static IList<string> BuildListOf(UnSafeNativeMethods.git_strarray strArray)
19711971
{
1972-
var list = new List<string>();
19731972

19741973
try
19751974
{
19761975
UnSafeNativeMethods.git_strarray* gitStrArray = &strArray;
19771976

1978-
uint numberOfEntries = (uint)gitStrArray->size;
1977+
var numberOfEntries = (int)gitStrArray->size;
1978+
var list = new List<string>(numberOfEntries);
19791979
for (uint i = 0; i < numberOfEntries; i++)
19801980
{
19811981
var name = Utf8Marshaler.FromNative((IntPtr)gitStrArray->strings[i]);
19821982
list.Add(name);
19831983
}
19841984

19851985
list.Sort(StringComparer.Ordinal);
1986+
return list;
19861987
}
19871988
finally
19881989
{
19891990
UnSafeNativeMethods.git_strarray_free(ref strArray);
19901991
}
1991-
1992-
return list;
19931992
}
19941993
}
19951994

LibGit2Sharp/Index.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,10 @@ public int Compare(T x, T y)
108108

109109
private List<IndexEntry> AllIndexEntries()
110110
{
111-
var list = new List<IndexEntry>();
111+
var entryCount = Count;
112+
var list = new List<IndexEntry>(entryCount);
112113

113-
for (int i = 0; i < Count; i++)
114+
for (int i = 0; i < entryCount; i++)
114115
{
115116
list.Add(this[i]);
116117
}

LibGit2Sharp/TreeDefinition.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ internal Tree Build(Repository repository)
229229

230230
using (var builder = new TreeBuilder())
231231
{
232-
var builtTreeEntryDefinitions = new List<Tuple<string, TreeEntryDefinition>>();
232+
var builtTreeEntryDefinitions = new List<Tuple<string, TreeEntryDefinition>>(entries.Count);
233233

234234
foreach (KeyValuePair<string, TreeEntryDefinition> kvp in entries)
235235
{

0 commit comments

Comments
 (0)
0