[python-users] Schönes Muster

Klaus Bremer klaus.bremer at bmcct.de
Do Feb 18 09:47:27 CET 2010


Dieses Konstrukt nutze ich auch gerne und habe mal eben einen quick & dirty Performance-Test gemacht: Test auf Element in Liste ist marginal schneller als Tuple. Schneller ist Test auf Element in bestehendem Set. Möglich, dass das Ergebnis bei Test auf Element in langen Listen bzw. großen Mengen anders aussieht.

Gruß,
Klaus

>>> def check(n):
...     return n in [1, 3, 4, 5, 7, 13]
... 
>>> import time
>>> def timer(m):
...     t1 = time.time()
...     for n in range(m):
...             x = check(n)
...     print time.time() - t1
... 
>>> timer(20)
1.90734863281e-05
>>> timer(120000)
0.0655560493469
>>> timer(1000000)
0.541162967682
>>> timer(1000000)
0.523926019669
>>> timer(1000000)
0.522948980331
>>> def check(n):
...     return n in (1, 3, 4, 5, 7, 13)
... 
>>> timer(1000000)
0.528048992157
>>> timer(1000000)
0.528880834579
>>> timer(1000000)
0.528455018997
>>> def check(n):
...     return n in set([1, 3, 4, 5, 7, 13])
... 
>>> timer(1000000)
1.56298208237
>>> timer(1000000)
1.56269001961
>>> s = set([1, 3, 4, 5, 7, 13])
>>> def check(n):
...     return n in s
... 
>>> timer(1000000)
0.307819128036
>>> timer(1000000)
0.310409069061
>>> 






Am 18.02.2010 um 08:58 schrieb Rex Turnbull:

> Mir gefällt die leichtigkeit und klarheit in einer Abfrage wie unten, 
> selbst wenn auf simple zahlen verglichen wird. Ich mache oft:
> 
> if wert in [1, 3, 4, 5, 7, 13]:
> 
> Dabei frage ich mich nun, ob es rechnerisch schneller ist mit [] oder () ...
> 
> Grüße, Rex
> 
> Klaus Blindert wrote:
>> Hallo,
>> 
>> ich bin letztens über ein schönes Muster (Pattern)
>> gestolpert. Vergleicht mal die beiden if-Bedingungen.
>> 
>> def save(self, *args, **kwargs):
>>    # Crop the image, provided x/y/w/h are available
>>    if self.x is not None and self.y is not None \
>>            and self.w is not None and self.h is not None:
>>        original = PIL.open(self.source.image)
>> 
>> def save(self, *args, **kwargs):
>>    # Crop the image, provided x/y/w/h are available
>>    if None not in (self.x, self.y, self.w, self.h):
>>        original = PIL.open(self.source.image)
>> 
>> Ist mir so noch nicht aufgefallen und hab mich doch sehr
>> gefreut =).
>> 
>> -klaus
>> 
>> ________________________________________
>> Diese Mail erhalten Sie ueber die Mailingliste Python-users der Universitaet zu Koeln
>> Python-users at uni-koeln.de
>> https://lists.uni-koeln.de/mailman/listinfo/python-users
>> 
> 
> ________________________________________
> Diese Mail erhalten Sie ueber die Mailingliste Python-users der Universitaet zu Koeln
> Python-users at uni-koeln.de
> https://lists.uni-koeln.de/mailman/listinfo/python-users





Mehr Informationen über die Mailingliste python-users