Представьте, что у нас есть следующая функция:
def return_slice(self, k):
return (self.A[self.C[k]:self.C[k+1]], self.B[self.C[k]:self.C[k+1]])
, которая является частью класса с массивами A, B и C, которые содержат тонну целых чисел (свыше 10 ^ 5). Хотя вызов этой функции несколько раз выполняется достаточно быстро, я заметил, что ~ 2 миллиона вызовов этой функции занимают очень много времени (мои последние несколько опытов показывали ~ 12 секунд). Мне удалось сделать немного лучше с этим:
def return_slice(self, k):
pos = slice(self.C[k], self.C[k + 1])
return (self.A[pos], self.B[pos])
, что снижает это до ~ 6 секунд. Это все еще немного неприемлемо для меня ... Я чувствую, что должен изменить всю структуру моих массивов, но я задаю вам этот вопрос, потому что может быть что-то, что я упускаю из-за того, почему это так медленно .
Имейте в виду, что «структура» для значений k не может быть принята, просто предположите, что она случайна для каждого выполнения.
Я также думаю, что создание кортежа перед возвратом Может быть, здесь проблема, но для ее устранения потребуется тонна работы - я бы предпочел изучить другие альтернативы.
Редактировать: A и B имеют одинаковый размер, но не одинаковый тип данных .