[Piglit] [PATCH 4/8] framework: Remove micro-optimization with no impact.
Eric Anholt
eric at anholt.net
Wed Sep 18 15:48:30 PDT 2013
Dylan Baker <baker.dylan.c at gmail.com> writes:
> On Wednesday 18 September 2013 15:00:29 Eric Anholt wrote:
>> We can compute these lists anyway. Note how we don't really do much
>> work to generate
>> ---
>> framework/summary.py | 59
>> ++++++++++++++++++++-------------------------------- 1 file changed, 23
>> insertions(+), 36 deletions(-)
>>
>> diff --git a/framework/summary.py b/framework/summary.py
>> index 656efc0..8f6f5f7 100644
>> --- a/framework/summary.py
>> +++ b/framework/summary.py
>> @@ -397,19 +397,10 @@ class Summary:
>> # Create a list with all the test names in it
>> self.tests['all'] = set(self.tests['all']) | set(each.tests)
>>
>> - def __generate_lists(self, lists):
>> + def __generate_lists(self):
>> """
>> Private: Generate the lists of changes, problems, regressions,
>> fixes, and skips
>> -
>> - lists is a list contianing any of the following: changes, problems,
>> - skips, fixes (which will also generate regressions)
>> -
>> - This method has different code paths to allow the exclusion of
>> certain - lists being generated. This is both useful for speeding up
>> HTML - generation when a page isn't needed (regressions with only
>> one test - file is provided), and for JUnit and text which only need
>> a limited - subset of these lists
>> """
>> def find_regressions(status):
>> """
>> @@ -441,31 +432,27 @@ class Summary:
>> status_text.append(s)
>> status.append(find_regressions(s))
>>
>> - if 'changes' in lists:
>> - # Check and append self.tests['changes']
>> - # A set cannot contain duplicate entries, so creating a set
>> - # out the list will reduce it's length to 1 if all entries
>> - # are the same, meaning it is not a change
>> - if len(set(status)) > 1:
>> - self.tests['changes'].add(test)
>> -
>> - if 'problems' in lists:
>> - for i in status_text:
>> - if i not in ['pass', 'skip', 'special']:
>> - self.tests['problems'].add(test)
>> -
>> - if 'skipped' in lists:
>> - if 'skip' in status_text:
>> - self.tests['skipped'].add(test)
>> -
>> - if 'fixes' in lists:
>> - # Find both fixes and regressions, and append them to the
>> - # proper lists
>> - for i in xrange(len(status) - 1):
>> - if status[i] < status[i + 1] and status[i] != 0:
>> - self.tests['regressions'].add(test)
>> - if status[i] > 1 and status[i + 1] == 1:
>> - self.tests['fixes'].add(test)
>> + # Check and append self.tests['changes']
>> + # A set cannot contain duplicate entries, so creating a set
>> + # out the list will reduce it's length to 1 if all entries
>> + # are the same, meaning it is not a change
>> + if len(set(status)) > 1:
>> + self.tests['changes'].add(test)
>> +
>> + for i in status_text:
>> + if i not in ['pass', 'skip', 'special']:
>> + self.tests['problems'].add(test)
>> +
>> + if 'skip' in status_text:
>> + self.tests['skipped'].add(test)
>> +
>> + # Find both fixes and regressions, and append them to the
>> + # proper lists
>> + for i in xrange(len(status) - 1):
>> + if status[i] < status[i + 1] and status[i] != 0:
>> + self.tests['regressions'].add(test)
>> + if status[i] > 1 and status[i + 1] == 1:
>> + self.tests['fixes'].add(test)
>>
>> def __find_totals(self):
>> """
>> @@ -560,7 +547,7 @@ class Summary:
>> else:
>> pages = ['problems', 'skipped']
>>
>> - self.__generate_lists(pages)
>> + self.__generate_lists()
>>
>> # Index.html is a bit of a special case since there is index, all,
>> and # alltests, where the other pages all use the same name. ie,
>
> IIRC there is a pretty major performance difference as more tests are added to
> the list, but if there isn't then could we just fold this back into the
> constructor, as it was originally?
I tested with junit and a single results list of a full piglit run,
which should highlight this "optimization" to the maximum extent
possible as far as I can tell.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20130918/887d2386/attachment.pgp>
More information about the Piglit
mailing list