Frst, se vi preoccupate per le prestazioni in Python (che non è sempre una cosa sensata da preoccuparsi, ma questa è un'altra conversazione), si dovrebbe utilizzare il timeit module. Anche in C è difficile prevedere in che modo determinate funzioni si comporteranno dopo la compilazione, ed è più difficile in Python. Le persone spesso esprimono con fiducia opinioni su quali funzioni sono più veloci e dipendenti dai dati. Quindi - usando timeit, intendo - potresti aver scoperto te stesso.
In secondo luogo, se si in realtà si preoccupano delle prestazioni negli elenchi di float, non si dovrebbero utilizzare elenchi, ma array numpy. Utilizzando IPython qui, sotto Python 2.7.2, che semplifica le cose:
In [41]: import random, numpy
In [42]: a = [0.1*i for i in range(10**5)]
In [43]: timeit min(a)
100 loops, best of 3: 4.55 ms per loop
In [44]: timeit sorted(a)[0]
100 loops, best of 3: 4.57 ms per loop
In [45]: random.shuffle(a)
In [46]: timeit min(a)
100 loops, best of 3: 6.06 ms per loop
In [47]: timeit min(a) # to make sure it wasn't a fluke
100 loops, best of 3: 6.07 ms per loop
In [48]: timeit sorted(a)[0]
10 loops, best of 3: 65.9 ms per loop
In [49]: b = numpy.array(a)
In [50]: timeit b.min()
10000 loops, best of 3: 97.5 us per loop
E notiamo alcune cose. (1) L'ordinamento di Python (timsort) funziona molto bene sui dati che hanno le esecuzioni ordinate, quindi l'ordinamento di una lista già ordinata non ha quasi nessuna penalità. (2) L'ordinamento di una lista casuale, d'altra parte, è molto più lento, e questo peggiorerà solo con l'aumentare dei dati. (3) Numpy.min() su un array float funziona sessanta volte più velocemente del min su un elenco Python, perché non deve essere come generale.
Prenderò una pugnalata che 'min' non solo sarebbe semanticamente più preciso, ma sarà probabilmente implementato in modo più efficiente poichè Python saprà cosa fare, e' sort() 'potrebbe non essere la cosa migliore fare. –
Inoltre, consultare http://stackoverflow.com/questions/2289053/fast-way-to-get-n-min-or-max-elements-from-a-list-in-python per un duplicato –
Era 'timeit 'rotto? Questa sembra una grande opportunità per mostrare i risultati di 'timeit'. Perché non hai pubblicato i risultati "timeit"? –