2016-11-30 2 views
0

Почему встроенные функции sum() и min() намного лучше, чем простая реализация (комментарий в следующем)? Как они улучшают производительность?Почему функции Python встроены в функции sum() и min() намного лучше?

class Solution(object): 
def minMoves(self, nums): 
    """ 
    :type nums: List[int] 
    :rtype: int 
    """ 
    ''' 
    m = sys.maxint 
    s = 0 
    for i in nums: 
     s += i 
     if i < m: 
      m = i 
    ''' 
    m = min(nums) 
    s = sum(nums) 
    return s - m * len(nums) 
+7

Я уверен, что они написаны в высоко оптимизированном C. – TigerhawkT3

ответ

2

Как Tigerhawk упоминалось в комментариях, большинство встроенных функций были написаны на C, как можно видеть here. Я считаю, что то, что мы ищем, начинается с line 591:

_sum(PyObject *module, PyObject *args) 
{ 
    PyObject *return_value = NULL; 
    PyObject *iterable; 
    PyObject *start = NULL; 

    if (!PyArg_UnpackTuple(args, "sum", 
     1, 2, 
     &iterable, &start)) { 
     goto exit; 
    } 
    return_value = builtin_sum_impl(module, iterable, start); 

exit: 
    return return_value; 
}