Нужно ли программистам вручную реализовывать оптимизацию, такую ​​как развертывание цикла и т. д., при написании кода PyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Нужно ли программистам вручную реализовывать оптимизацию, такую ​​как развертывание цикла и т. д., при написании кода Py

Сообщение Anonymous »

Недавно я изучаю некоторые темы HPC и узнаю, что современные компиляторы C/C++ способны обнаруживать места, где требуется оптимизация, и проводить ее, используя соответствующие методы, такие как SIMD, развертывание цикла и т. д., особенно под флагом -O3< /code>, с компромиссом между производительностью во время выполнения, временем компиляции и размером объектного файла.
Тогда мне сразу пришло в голову, что CPython интерпретирует и выполняет «на лету», поэтому я предполагаю, что он не может себе этого позволить. проводить эти функции компилятора, поскольку время компиляции для него эквивалентно времени выполнения, поэтому я провел игрушечный эксперимент ниже:

Код: Выделить всё

import time, random

n = 512
A = [[random.random() for _ in range(n)] for _ in range(n)]
B = [[random.random() for _ in range(n)] for _ in range(n)]
C = [[0] * n for _ in range(n)]

def matMul( A, B, C ):
""" C = A .* B """
for i in range(0, n - 4, 4):
for j in range(0, n - 4, 4):
for k in range(0, n - 4, 4):
C[i][j] = A[i][k] + B[k][j]
C[i + 1][j + 1] = A[i + 1][k + 1] + B[k + 1][j + 1]
C[i + 2][j + 2] = A[i + 2][k + 2] + B[k + 2][j + 2]
C[i + 3][j + 3] = A[i + 3][k + 3] + B[k + 3][j + 3]
C[i + 4][j + 4] = A[i + 4][k + 4] + B[k + 4][j + 4]
# return C

start = time.time()
matMul( A, B, C )
end = time.time()

print( f"Elapsed {end - start}" )
С разворачиванием цикла программа завершается за 3 секунды, без него — почти 20 секунд.
Значит ли это, что нужно вручную реализовать методы при написании кода Python? или Python предлагает оптимизацию при каких-либо специальных настройках?

Подробнее здесь: https://stackoverflow.com/questions/792 ... folding-et
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»