zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #02497
[Merge] lp:~zorba-coders/zorba/markos-scratch into lp:zorba
Markos Zaharioudakis has proposed merging lp:~zorba-coders/zorba/markos-scratch into lp:zorba.
Requested reviews:
Markos Zaharioudakis (markos-za)
For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/markos-scratch/+merge/84487
small optimization of the group by
--
https://code.launchpad.net/~zorba-coders/zorba/markos-scratch/+merge/84487
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'src/context/static_context_consts.h'
--- src/context/static_context_consts.h 2011-07-21 23:02:27 +0000
+++ src/context/static_context_consts.h 2011-12-05 15:36:30 +0000
@@ -120,40 +120,6 @@
decl_manual
};
- enum annotations_t
- {
- fn_public = 0,
- fn_private,
- zann_deterministic,
- zann_nondeterministic,
- zann_assignable,
- zann_nonassignable,
- zann_sequential,
- zann_nonsequential,
- zann_variadic,
- zann_streamable,
- zann_unique,
- zann_nonunique,
- zann_value_equality,
- zann_general_equality,
- zann_value_range,
- zann_general_range,
- zann_automatic,
- zann_manual,
- zann_mutable,
- zann_queue,
- zann_append_only,
- zann_const,
- zann_ordered,
- zann_unordered,
- zann_read_only_nodes,
- zann_mutable_nodes,
-
- // must be at the end
- zann_end
-
- };
-
enum node_modifier_t
{
read_only,
=== modified file 'src/runtime/core/gflwor/common.cpp'
--- src/runtime/core/gflwor/common.cpp 2011-10-22 15:44:45 +0000
+++ src/runtime/core/gflwor/common.cpp 2011-12-05 15:36:30 +0000
@@ -187,14 +187,15 @@
{
uint32_t hash = 0;
- csize numCols = theGroupingSpecs->size();
+ std::vector<store::Item_t>::const_iterator ite = t->theTypedValues.begin();
+ std::vector<store::Item_t>::const_iterator end = t->theTypedValues.end();
+ std::vector<GroupingSpec>::const_iterator ite2 = theGroupingSpecs->begin();
- for (csize i = 0; i < numCols; i++)
+ for (; ite != end; ++ite, ++ite2)
{
- if (t->theTypedValues[i] != NULL)
+ if (*ite)
{
- hash += t->theTypedValues[i]->hash(theTimezone,
- (*theGroupingSpecs)[i].theCollator);
+ hash += (*ite)->hash(theTimezone, (*ite2).theCollator);
}
}
@@ -207,46 +208,49 @@
assert(theGroupingSpecs->size() == t1->theTypedValues.size());
assert(t2->theTypedValues.size() == t1->theTypedValues.size());
+ std::vector<store::Item_t>::const_iterator end1 = t1->theTypedValues.end();
std::vector<store::Item_t>::const_iterator iter1 = t1->theTypedValues.begin();
std::vector<store::Item_t>::const_iterator iter2 = t2->theTypedValues.begin();
- std::vector<store::Item_t>::const_iterator end = t1->theTypedValues.end();
- long i = 0;
+ std::vector<GroupingSpec>::const_iterator iter3 = theGroupingSpecs->begin();
- while(iter1 != end)
+ while (iter1 != end1)
{
- if(*iter1 == NULL)
+ const store::Item* item1 = (*iter1).getp();
+ const store::Item* item2 = (*iter2).getp();
+
+ if (item1 == NULL)
{
- if(*iter2 != NULL)
+ if (item2 != NULL)
{
return false;
}
}
- else if(*iter2 == NULL)
+ else if (item2 == NULL)
{
return false;
}
else
{
- store::Item_t item1 = *iter1;
- store::Item_t item2 = *iter2;
-
try
{
- if ((*theGroupingSpecs)[i].theDoFastComparison)
+ if ((*iter3).theDoFastComparison)
{
- if (!item1->equals(item2, theTimezone, (*theGroupingSpecs)[i].theCollator))
+ if (!item1->equals(item2, theTimezone, (*iter3).theCollator))
{
return false;
}
}
else
{
+ store::Item_t tmp1 = (*iter1);
+ store::Item_t tmp2 = (*iter2);
+
if (!CompareIterator::valueEqual(theLocation,
- item1,
- item2,
+ tmp1,
+ tmp2,
theTypeManager,
theTimezone,
- (*theGroupingSpecs)[i].theCollator))
+ (*iter3).theCollator))
{
return false;
}
@@ -262,7 +266,7 @@
}
}
- ++i;
+ ++iter3;
++iter1;
++iter2;
}
Follow ups