Skip to content

Commit 5ee4401

Browse files
bahusoidhazzik
authored andcommitted
Optimize ToArray conversions
1 parent d0aecf2 commit 5ee4401

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+315
-218
lines changed

src/NHibernate/Async/Cache/NonstrictReadWriteCache.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public async Task<object[]> GetManyAsync(CacheKey[] keys, long timestamp, Cancel
5050
{
5151
log.Debug("Cache lookup: {0}", string.Join(",", keys.AsEnumerable()));
5252
}
53-
var results = await (_cache.GetManyAsync(keys.Select(o => (object) o).ToArray(), cancellationToken)).ConfigureAwait(false);
53+
var results = await (_cache.GetManyAsync(keys, cancellationToken)).ConfigureAwait(false);
5454
if (!log.IsDebugEnabled())
5555
{
5656
return results;

src/NHibernate/Async/Cache/ReadOnlyCache.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public async Task<object[]> GetManyAsync(CacheKey[] keys, long timestamp, Cancel
3939
{
4040
log.Debug("Cache lookup: {0}", string.Join(",", keys.AsEnumerable()));
4141
}
42-
var results = await (_cache.GetManyAsync(keys.Select(o => (object) o).ToArray(), cancellationToken)).ConfigureAwait(false);
42+
var results = await (_cache.GetManyAsync(keys, cancellationToken)).ConfigureAwait(false);
4343
if (!log.IsDebugEnabled())
4444
{
4545
return results;
@@ -95,7 +95,7 @@ public async Task<bool[]> PutManyAsync(
9595
var skipKeyIndexes = new HashSet<int>();
9696
if (checkKeys.Any())
9797
{
98-
var objects = await (_cache.GetManyAsync(checkKeys.Select(o => (object) o).ToArray(), cancellationToken)).ConfigureAwait(false);
98+
var objects = await (_cache.GetManyAsync(checkKeys.ToArray(), cancellationToken)).ConfigureAwait(false);
9999
for (var i = 0; i < objects.Length; i++)
100100
{
101101
if (objects[i] != null)

src/NHibernate/Async/Cache/ReadWriteCache.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public async Task<object[]> GetManyAsync(CacheKey[] keys, long timestamp, Cancel
9999
var result = new object[keys.Length];
100100
using (await _lockObjectAsync.LockAsync())
101101
{
102-
var lockables = await (_cache.GetManyAsync(keys.Select(o => (object) o).ToArray(), cancellationToken)).ConfigureAwait(false);
102+
var lockables = await (_cache.GetManyAsync(keys, cancellationToken)).ConfigureAwait(false);
103103
for (var i = 0; i < lockables.Length; i++)
104104
{
105105
var lockable = (ILockable) lockables[i];
@@ -185,12 +185,12 @@ public async Task<bool[]> PutManyAsync(
185185
{
186186
log.Debug("Caching: {0}", string.Join(",", keys.AsEnumerable()));
187187
}
188-
var keysArr = keys.Cast<object>().ToArray();
189-
var lockValue = await (_cache.LockManyAsync(keysArr, cancellationToken)).ConfigureAwait(false);
188+
189+
var lockValue = await (_cache.LockManyAsync(keys, cancellationToken)).ConfigureAwait(false);
190190
try
191191
{
192192
var putBatch = new Dictionary<object, object>();
193-
var lockables = await (_cache.GetManyAsync(keysArr, cancellationToken)).ConfigureAwait(false);
193+
var lockables = await (_cache.GetManyAsync(keys, cancellationToken)).ConfigureAwait(false);
194194
for (var i = 0; i < keys.Length; i++)
195195
{
196196
var key = keys[i];
@@ -231,7 +231,7 @@ public async Task<bool[]> PutManyAsync(
231231
}
232232
finally
233233
{
234-
await (_cache.UnlockManyAsync(keysArr, lockValue, cancellationToken)).ConfigureAwait(false);
234+
await (_cache.UnlockManyAsync(keys, lockValue, cancellationToken)).ConfigureAwait(false);
235235
}
236236
}
237237
return result;

src/NHibernate/Async/Collection/Generic/PersistentGenericIdentifierBag.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
using NHibernate.Loader;
2323
using NHibernate.Persister.Collection;
2424
using NHibernate.Type;
25+
using NHibernate.Util;
2526

2627
namespace NHibernate.Collection.Generic
2728
{
@@ -164,7 +165,7 @@ public override Task<ICollection> GetOrphansAsync(object snapshot, string entity
164165
try
165166
{
166167
var sn = (ISet<SnapshotElement>)GetSnapshot();
167-
return GetOrphansAsync(sn.Select(x => x.Value).ToArray(), (ICollection) _values, entityName, Session, cancellationToken);
168+
return GetOrphansAsync(sn.ToArray(x => x.Value), (ICollection) _values, entityName, Session, cancellationToken);
168169
}
169170
catch (Exception ex)
170171
{

src/NHibernate/Async/Id/IPostInsertIdentityPersister.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using NHibernate.Persister.Entity;
1818
using NHibernate.SqlCommand;
1919
using NHibernate.Type;
20+
using NHibernate.Util;
2021

2122
namespace NHibernate.Id
2223
{

src/NHibernate/Async/Id/SelectGenerator.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
using NHibernate.SqlCommand;
1919
using NHibernate.SqlTypes;
2020
using NHibernate.Type;
21+
using NHibernate.Util;
2122

2223
namespace NHibernate.Id
2324
{

src/NHibernate/Async/Persister/Entity/AbstractEntityPersister.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ public async Task BindSelectByUniqueKeyAsync(
566566
{
567567
cancellationToken.ThrowIfCancellationRequested();
568568
var propertyNames = GetUniqueKeyPropertyNames(suppliedPropertyNames);
569-
var parameterTypes = propertyNames.Select(GetPropertyType).ToArray();
569+
var parameterTypes = propertyNames.ToArray(p => GetPropertyType(p));
570570
var entity = binder.Entity;
571571
for (var i = 0; i < propertyNames.Length; i++)
572572
{

src/NHibernate/Async/Type/CompositeCustomType.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using NHibernate.SqlTypes;
1818
using NHibernate.UserTypes;
1919
using System.Collections.Generic;
20+
using NHibernate.Util;
2021

2122
namespace NHibernate.Type
2223
{

src/NHibernate/Bytecode/Lightweight/AccessOptimizer.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Linq;
33
using System.Security;
44
using NHibernate.Properties;
5+
using NHibernate.Util;
56

67
namespace NHibernate.Bytecode.Lightweight
78
{
@@ -26,8 +27,8 @@ public AccessOptimizer(
2627
: this(
2728
getDelegate,
2829
setDelegate,
29-
getters.Select(o => (GetPropertyValueInvoker) o.Get).ToArray(),
30-
setters.Select(o => (SetPropertyValueInvoker) o.Set).ToArray(),
30+
getters.ToArray(o => (GetPropertyValueInvoker) o.Get),
31+
setters.ToArray(o => (SetPropertyValueInvoker) o.Set),
3132
null,
3233
null)
3334
{

src/NHibernate/Cache/NonstrictReadWriteCache.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public object[] GetMany(CacheKey[] keys, long timestamp)
7171
{
7272
log.Debug("Cache lookup: {0}", string.Join(",", keys.AsEnumerable()));
7373
}
74-
var results = _cache.GetMany(keys.Select(o => (object) o).ToArray());
74+
var results = _cache.GetMany(keys);
7575
if (!log.IsDebugEnabled())
7676
{
7777
return results;

0 commit comments

Comments
 (0)