1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
-
- <div class="comment" typeof="schema:UserComments">
- <p class="comment-meta">
- <span class="comment-author" property="schema:creator">Tarek</span> le <span class="comment-date" property="schema:commentTime">26/10/2006</span> :
- </p>
- <div class="comment-content" property="schema:commentText">
- <p>Le même script sous Python 2.5 :<br />
- <br />
- tziade@dabox:~$ python test2.py<br />
- === map vs. list-comprehension ===<br />
- map without list-comprehension:<br />
- 707 pystones<br />
- map with list-comprehension:<br />
- 634 pystones<br />
- === filter vs. list-comprehension ===<br />
- filter without list-comprehension:<br />
- 687 pystones<br />
- filter with list-comprehension:<br />
- 634 pystones</p>
- </div>
- </div>
- <div class="comment" typeof="schema:UserComments">
- <p class="comment-meta">
- <span class="comment-author" property="schema:creator">JS</span> le <span class="comment-date" property="schema:commentTime">26/10/2006</span> :
- </p>
- <div class="comment-content" property="schema:commentText">
- <p>Bon, j'ai rien compris au map et list-comprehension, faudrait que je regarde ca de plus près...<br />
- <br />
- Par contre, t'es sur #python-fr ???</p>
- </div>
- </div>
- <div class="comment" typeof="schema:UserComments">
- <p class="comment-meta">
- <span class="comment-author" property="schema:creator">sebsauvage</span> le <span class="comment-date" property="schema:commentTime">01/12/2006</span> :
- </p>
- <div class="comment-content" property="schema:commentText">
- <p>Hello !<br />
- <br />
- Tu as oublié qu'avec de si petites données de test, l'overhead d'appel aux fonction devient non négligeable.<br />
- <br />
- J'ai refait les tests avec de plus grands ensembles de données et je maintien ce que j'ai dit:<br />
- map et filter sont plus rapide que list comprehension (sauf quand on combine map et filter).<br />
- <br />
- Voici le fichier de test:<br />
- <a href="http://sebsauvage.net/python/snyppets/maptest.py" title="http://sebsauvage.net/python/snyppets/maptest.py" rel="nofollow">sebsauvage.net/python/sny...</a><br />
- <br />
- Et les résultats:<br />
- ===== map_without_list_comprehension =====<br />
- 105 function calls in 0.231 CPU seconds<br />
- ===== map_with_list_comprehension =====<br />
- 1000005 function calls in 6.941 CPU seconds<br />
- <br />
- ===== filter_without_list_comprehension =====<br />
- 105 function calls in 0.074 CPU seconds<br />
- ===== filter_with_list_comprehension =====<br />
- 1000005 function calls in 6.889 CPU seconds<br />
- <br />
- C'est sans appel: map et filter sont nettement plus rapides.<br />
- (Dans notre exemple: d'un facteur x30 pour map, et d'un facteur x93 pour filter)<br />
- <br />
- <br />
- ...sauf quand on doit les combiner:<br />
- ===== mapfilter_without_list_comprehension =====<br />
- 2042605 function calls in 13.935 CPU seconds<br />
- ===== mapfilter_with_list_comprehension =====<br />
- 521205 function calls in 3.795 CPU seconds<br />
- <br />
- Là la list comprehension est plus rapide.<br />
- <br />
- <br />
- Donc je ne me suis pas trompé, mais c'est à mitiger. :-)<br />
- Il vaut mieux profiler le code.<br />
- </p>
- </div>
- </div>
- <div class="comment" typeof="schema:UserComments">
- <p class="comment-meta">
- <span class="comment-author" property="schema:creator">xfeeder</span> le <span class="comment-date" property="schema:commentTime">29/06/2010</span> :
- </p>
- <div class="comment-content" property="schema:commentText">
- <p>les list-comprehensions sont toujours plus rapides que map ou filter avec Python 2.4.</p>
- </div>
- </div>
|