07 декабря 2016

Сравнение производительности вычислений MatLab и Python. Часть 1. Умножение матриц

Перед каждым, кто занимается численными научными расчетами рано или поздно встает вопрос о производительности различных языков программирования. В серии заметок сравним производительность вычислений в среде MatLab и библиотеки Python NumPy.


Для тестирования производительности поэлементного умножения массивов будем использовать следующую методику:
  1. Генерация двух случайных массивов 1000x1000 элементов (1 млн.)
  2. Поэлементное умножения двух получившихся массивов
  3. Повторяем пункты 1 и 2 1000 раз
  4. Вычисляем среднее значение
Код, используемый для замера производительности представлен в конце заметки.

Умножение массивов MatLab

Рис. 1 — Время вычисления умножения

Рис. 2 — Время генерации 2-х массивов по 1млн. элементов

По результатам теста получены следующие результаты:
Средне время генерации: 0.0217 с
Средне время вычисления: 0.0331 с

Умножение массивов Python (NumPy)



Рис. 3 — Время вычисления умножения

Рис. 4 — Время генерации 2-х массивов по 1млн. элементов

По результатам теста получены следующие результаты:
Среднее время генерации:0.0219 с
Среднее время вычисления:0.0282 с

Заключение

В данной задаче Python не имеет значительных преимуществ в скорости вычисления перед MatLab.

Исходный код