Хранение объектов Python в списке Python по сравнению с массивом Numpy фиксированной длины

Выполняя некоторые работы по биоинформатике, я размышлял о последствиях хранения экземпляров объектов в массиве Numpy, а не в списке Python, но во всех тестах я ve сделал производительность была хуже в каждом случае. Я использую CPython. Кто-нибудь знает причину?

В частности:

  • Как влияет на производительность использование массива фиксированной длины numpy.ndarray(dtype=object)по сравнению с обычным списком Python? Первоначальные тесты, которые я выполнил, показали, что доступ к элементам массива Numpy был медленнее, чем итерация по списку Python, особенно при использовании объектных методов.
  • Почему быстрее создавать экземпляры объектов, используя понимание списка, например [ X() for i in range(n) ]вместо numpy.empty(size=n, dtype= объект)?
  • Каковы накладные расходы памяти для каждого из них? Я не смог это проверить. Мои классы широко используют __slots__, если это как-то влияет.
10
задан astay13 27 June 2012 в 23:14
поделиться