Skip to content

Commit 9e6f286

Browse files
committed
PERF: Use .Count instead of .Any to check for existence
1 parent aaf954a commit 9e6f286

File tree

8 files changed

+30
-30
lines changed

8 files changed

+30
-30
lines changed

RDFSharp/Query/Mirella/Algebra/Filters/RDFExistsFilter.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,13 @@ internal override bool ApplyFilter(DataRow row, bool applyNegation)
9090
else
9191
{
9292
EnumerableRowCollection<DataRow> patternResultsEnumerable = PatternResults?.AsEnumerable();
93-
if (patternResultsEnumerable?.Any() ?? false)
93+
if (patternResultsEnumerable?.Count() > 0)
9494
{
9595
#region Subject
9696
bool subjectCompared = false;
9797
if (Pattern.Subject is RDFVariable
98-
&& PatternResults.Columns.Contains(subjectString)
99-
&& row.Table.Columns.Contains(subjectString))
98+
&& PatternResults.Columns.Contains(subjectString)
99+
&& row.Table.Columns.Contains(subjectString))
100100
{
101101
//In case of emptiness the solution is compatible, otherwise proceed with comparison
102102
if (!row.IsNull(subjectString))
@@ -114,8 +114,8 @@ internal override bool ApplyFilter(DataRow row, bool applyNegation)
114114
#region Predicate
115115
bool predicateCompared = false;
116116
if (Pattern.Predicate is RDFVariable
117-
&& PatternResults.Columns.Contains(predicateString)
118-
&& row.Table.Columns.Contains(predicateString))
117+
&& PatternResults.Columns.Contains(predicateString)
118+
&& row.Table.Columns.Contains(predicateString))
119119
{
120120
//In case of emptiness the solution is compatible, otherwise proceed with comparison
121121
if (!row.IsNull(predicateString))
@@ -133,8 +133,8 @@ internal override bool ApplyFilter(DataRow row, bool applyNegation)
133133
#region Object
134134
bool objectCompared = false;
135135
if (Pattern.Object is RDFVariable
136-
&& PatternResults.Columns.Contains(objectString)
137-
&& row.Table.Columns.Contains(objectString))
136+
&& PatternResults.Columns.Contains(objectString)
137+
&& row.Table.Columns.Contains(objectString))
138138
{
139139
//In case of emptiness the solution is compatible, otherwise proceed with comparison
140140
if (!row.IsNull(objectString))
@@ -150,7 +150,7 @@ internal override bool ApplyFilter(DataRow row, bool applyNegation)
150150
#endregion
151151

152152
//Verify filter's response on the pattern resultset
153-
if ((subjectCompared || predicateCompared || objectCompared) && patternResultsEnumerable.Any())
153+
if ((subjectCompared || predicateCompared || objectCompared) && patternResultsEnumerable.Count() > 0)
154154
keepRow = true;
155155
}
156156
}

RDFSharp/Query/Mirella/Algebra/Filters/RDFValuesFilter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ internal override bool ApplyFilter(DataRow row, bool applyNegation)
6868

6969
//Check is performed only on columns found as bindings in the filter
7070
List<string> filterColumns = Values.Bindings.Keys.Where(k => row.Table.Columns.Contains(k)).ToList();
71-
if (filterColumns.Any())
71+
if (filterColumns.Count > 0)
7272
{
7373
//Get the enumerable representation of the filter table
7474
EnumerableRowCollection<DataRow> valuesTableEnumerable = ValuesTable.AsEnumerable();
@@ -85,7 +85,7 @@ internal override bool ApplyFilter(DataRow row, bool applyNegation)
8585
});
8686

8787
//Analyze the response of the check
88-
keepRow = valuesTableEnumerable.Any();
88+
keepRow = valuesTableEnumerable.Count() > 0;
8989
}
9090

9191
//Apply the eventual negation

RDFSharp/Query/Mirella/Algebra/Modifiers/RDFGroupByModifier.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,19 +119,19 @@ private void ConsistencyChecks(DataTable table)
119119
//Every partition variable must be found in the working table as a column
120120
IEnumerable<string> unavailablePartitionVariables = PartitionVariables.Where(pv => !table.Columns.Contains(pv.ToString()))
121121
.Select(pv => pv.ToString());
122-
if (unavailablePartitionVariables.Any())
122+
if (unavailablePartitionVariables.Count() > 0)
123123
throw new RDFQueryException(string.Format("Cannot apply GroupBy modifier because the working table does not contain the following columns needed for partitioning: {0}", string.Join(",", unavailablePartitionVariables.Distinct())));
124124

125125
//Every aggregator variable must be found in the working table as a column
126126
IEnumerable<string> unavailableAggregatorVariables = Aggregators.Where(ag => !table.Columns.Contains(ag.AggregatorVariable.ToString()))
127127
.Select(ag => ag.AggregatorVariable.ToString());
128-
if (unavailableAggregatorVariables.Any())
128+
if (unavailableAggregatorVariables.Count() > 0)
129129
throw new RDFQueryException(string.Format("Cannot apply GroupBy modifier because the working table does not contain the following columns needed for aggregation: {0}", string.Join(",", unavailableAggregatorVariables.Distinct())));
130130

131131
//There should NOT be intersection between partition variables (GroupBy) and projection variables (Aggregators)
132132
IEnumerable<string> commonPartitionProjectionVariables = PartitionVariables.Where(pv => Aggregators.Any(ag => (!(ag is RDFPartitionAggregator)) && pv.Equals(ag.ProjectionVariable)))
133133
.Select(pav => pav.ToString());
134-
if (commonPartitionProjectionVariables.Any())
134+
if (commonPartitionProjectionVariables.Count() > 0)
135135
throw new RDFQueryException(string.Format("Cannot apply GroupBy modifier because the following variables have been specified both for partitioning (in GroupBy) and projection (in Aggregator): {0}", string.Join(",", commonPartitionProjectionVariables.Distinct())));
136136
}
137137

RDFSharp/Query/Mirella/Algebra/RDFValues.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public RDFValues AddColumn(RDFVariable variable, List<RDFPatternMember> bindings
7676

7777
//Populate bindings of the given variable
7878
//(null indicates the special UNDEF binding)
79-
if (bindings?.Any() ?? false)
79+
if (bindings?.Count > 0)
8080
bindings.ForEach(b => Bindings[variableString].Add((b is RDFResource || b is RDFLiteral) ? b : null));
8181
else
8282
Bindings[variableString].Add(null);

RDFSharp/Query/Mirella/RDFOperationEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ private RDFConstructQueryResult ExecuteConstructQueryFromOperation(RDFOperation
369369
DataTable resultTable = new DataTable();
370370
RDFConstructQueryResult constructResult = new RDFConstructQueryResult();
371371
List<RDFQueryMember> evaluableQueryMembers = operation.GetEvaluableQueryMembers().ToList();
372-
if (evaluableQueryMembers.Any())
372+
if (evaluableQueryMembers.Count > 0)
373373
{
374374
//Iterate the evaluable members of the operation
375375
EvaluateQueryMembers(evaluableQueryMembers, datasource);

RDFSharp/Query/Mirella/RDFOperationPrinter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ internal static string PrintClearOperation(RDFClearOperation clearOperation)
206206
private static string PrintPrefixes(List<RDFNamespace> operationPrefixes)
207207
{
208208
StringBuilder sb = new StringBuilder();
209-
if (operationPrefixes.Any())
209+
if (operationPrefixes.Count > 0)
210210
{
211211
operationPrefixes.ForEach(pf => sb.AppendLine(string.Concat("PREFIX ", pf.NamespacePrefix, ": <", pf.NamespaceUri.ToString(), ">")));
212212
sb.AppendLine();

RDFSharp/Query/Mirella/RDFQueryEngine.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ internal RDFSelectQueryResult EvaluateSelectQuery(RDFSelectQuery selectQuery, RD
8888
DataTable queryResultTable = new DataTable();
8989
RDFSelectQueryResult queryResult = new RDFSelectQueryResult();
9090
List<RDFQueryMember> evaluableQueryMembers = selectQuery.GetEvaluableQueryMembers().ToList();
91-
if (evaluableQueryMembers.Any())
91+
if (evaluableQueryMembers.Count > 0)
9292
{
9393
//Iterate the evaluable members of the query
9494
EvaluateQueryMembers(evaluableQueryMembers, datasource);
@@ -131,7 +131,7 @@ DataTable FillDescribeTerms(DataTable qResultTable)
131131
DataTable queryResultTable = new DataTable();
132132
RDFDescribeQueryResult queryResult = new RDFDescribeQueryResult();
133133
List<RDFQueryMember> evaluableQueryMembers = describeQuery.GetEvaluableQueryMembers().ToList();
134-
if (evaluableQueryMembers.Any())
134+
if (evaluableQueryMembers.Count > 0)
135135
{
136136
//Iterate the evaluable members of the query
137137
EvaluateQueryMembers(evaluableQueryMembers, datasource);
@@ -157,7 +157,7 @@ internal RDFConstructQueryResult EvaluateConstructQuery(RDFConstructQuery constr
157157
DataTable queryResultTable = new DataTable();
158158
RDFConstructQueryResult constructResult = new RDFConstructQueryResult();
159159
List<RDFQueryMember> evaluableQueryMembers = constructQuery.GetEvaluableQueryMembers().ToList();
160-
if (evaluableQueryMembers.Any())
160+
if (evaluableQueryMembers.Count > 0)
161161
{
162162
//Iterate the evaluable members of the query
163163
EvaluateQueryMembers(evaluableQueryMembers, datasource);
@@ -182,7 +182,7 @@ internal RDFAskQueryResult EvaluateAskQuery(RDFAskQuery askQuery, RDFDataSource
182182
{
183183
RDFAskQueryResult askResult = new RDFAskQueryResult();
184184
List<RDFQueryMember> evaluableQueryMembers = askQuery.GetEvaluableQueryMembers().ToList();
185-
if (evaluableQueryMembers.Any())
185+
if (evaluableQueryMembers.Count > 0)
186186
{
187187
//Iterate the evaluable members of the query
188188
EvaluateQueryMembers(evaluableQueryMembers, datasource);
@@ -386,7 +386,7 @@ internal void EvaluatePatternGroup(RDFPatternGroup patternGroup, RDFDataSource d
386386
internal void FinalizePatternGroup(RDFPatternGroup patternGroup)
387387
{
388388
List<RDFPatternGroupMember> evaluablePGMembers = patternGroup.GetEvaluablePatternGroupMembers().ToList();
389-
if (evaluablePGMembers.Any())
389+
if (evaluablePGMembers.Count > 0)
390390
{
391391
//Populate patternGroup result table
392392
DataTable patternGroupResultTable = CombineTables(PatternGroupMemberResultTables[patternGroup.QueryMemberID]);
@@ -422,7 +422,7 @@ internal void ApplyFilters(RDFPatternGroup patternGroup)
422422
{
423423
List<RDFPatternGroupMember> evaluablePatternGroupMembers = patternGroup.GetEvaluablePatternGroupMembers().ToList();
424424
List<RDFFilter> filters = patternGroup.GetFilters().ToList();
425-
if (evaluablePatternGroupMembers.Any() && filters.Any())
425+
if (evaluablePatternGroupMembers.Count > 0 && filters.Count > 0)
426426
{
427427
DataTable filteredTable = QueryMemberResultTables[patternGroup.QueryMemberID].Clone();
428428
IEnumerator rowsEnum = QueryMemberResultTables[patternGroup.QueryMemberID].Rows.GetEnumerator();
@@ -656,7 +656,7 @@ internal DataTable DescribeTerms(RDFDescribeQuery describeQuery, RDFDataSource d
656656
AddColumn(result, "?OBJECT");
657657

658658
//In case of "DESCRIBE *" query, all the variables must be considered describe terms
659-
if (!describeQuery.DescribeTerms.Any())
659+
if (describeQuery.DescribeTerms.Count == 0)
660660
FetchDescribeVariablesFromQueryMembers(describeQuery, describeQuery.GetEvaluableQueryMembers());
661661

662662
//Iterate the describe terms of the query
@@ -1719,7 +1719,7 @@ bool CheckJoin(DataRow leftRow, DataRow rightRow, string commonColumn)
17191719
List<DataRow> relatedRowsList = relatedRows.ToList();
17201720

17211721
//Relation HAS found data => proceed with outer-join
1722-
if (relatedRowsList.Any())
1722+
if (relatedRowsList.Count > 0)
17231723
{
17241724
foreach (DataRow relatedRow in relatedRowsList)
17251725
{
@@ -1979,15 +1979,15 @@ internal static DataTable ProjectTable(RDFSelectQuery query, DataTable table)
19791979
ProjectExpressions(query, table);
19801980

19811981
//Execute configured sort modifiers
1982-
IEnumerable<RDFOrderByModifier> orderbyModifiers = query.GetModifiers().OfType<RDFOrderByModifier>();
1983-
if (orderbyModifiers.Any())
1982+
RDFOrderByModifier[] orderbyModifiers = query.GetModifiers().OfType<RDFOrderByModifier>().ToArray();
1983+
if (orderbyModifiers.Length > 0)
19841984
{
19851985
table = orderbyModifiers.Aggregate(table, (current, modifier) => modifier.ApplyModifier(current));
19861986
table = table.DefaultView.ToTable();
19871987
}
19881988

19891989
//Execute projection algorythm
1990-
if (query.ProjectionVars.Any())
1990+
if (query.ProjectionVars.Count > 0)
19911991
{
19921992
//Remove non-projection variables
19931993
DataColumn[] tableColumns = table.Columns.OfType<DataColumn>().ToArray();

RDFSharp/Query/Mirella/RDFQueryPrinter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ int subqueryUnionOrMinusSpacesFunc(bool unionOrMinus)
9393
//Query hasn't GroupBy modifier => respect given projections
9494
else
9595
{
96-
if (!selectQuery.ProjectionVars.Any())
96+
if (selectQuery.ProjectionVars.Count == 0)
9797
sb.Append(" *");
9898
else
9999
{
@@ -181,7 +181,7 @@ internal static string PrintDescribeQuery(RDFDescribeQuery describeQuery)
181181

182182
#region DESCRIBE
183183
sb.Append("DESCRIBE");
184-
if (describeQuery.DescribeTerms.Any())
184+
if (describeQuery.DescribeTerms.Count > 0)
185185
describeQuery.DescribeTerms.ForEach(dt => sb.Append(string.Concat(" ", PrintPatternMember(dt, describeQuery.Prefixes))));
186186
else
187187
sb.Append(" *");
@@ -287,7 +287,7 @@ internal static string PrintAskQuery(RDFAskQuery askQuery)
287287
internal static List<RDFNamespace> PrintPrefixes(RDFQuery query, StringBuilder sb, bool enablePrinting)
288288
{
289289
List<RDFNamespace> prefixes = query.GetPrefixes();
290-
if (enablePrinting && prefixes.Any())
290+
if (enablePrinting && prefixes.Count > 0)
291291
{
292292
prefixes.ForEach(pf => sb.AppendLine(string.Concat("PREFIX ", pf.NamespacePrefix, ": <", pf.NamespaceUri.ToString(), ">")));
293293
sb.AppendLine();

0 commit comments

Comments
 (0)