В настоящее время я работаю с разреженной матрицей в Python. Я решил использовать lil_matrix для моей проблемы, потому что, как объяснено в документации, lil_matrix предназначен для использования для построения разреженной матрицы. Моя разреженная матрица имеет размеры 2500x2500
У меня есть два куска кода внутри двух циклов (которые повторяются в элементах матрицы), которые имеют разное время выполнения, и я хочу понять, почему. Первый -
current = lil_matrix_A[i,j]
lil_matrix_A[i, j] = current + 1
lil_matrix_A[j, i] = current + 1
По сути, просто берём каждый элемент матрицы и увеличиваем его значение на единицу.
А второй, как показано ниже
value = lil_matrix_A[i, j]
temp = (value * 10000) / (dictionary[listA[i]] * dictionary[listB[j]])
lil_matrix_A[i, j] = temp
lil_matrix_A[j, i] = temp
В основном, беря значение, вычисляя формулу и вставляя это новое значение в матрицу.
Первый код выполняется примерно за 0,4 секунды, а второй фрагмент кода - около 32 секунд.
Я понимаю, что у второго есть дополнительный расчет в середине, но разница во времени, на мой взгляд, не имеет смысла. Индексирование по словарю и списку имеет сложность O (1), поэтому это не должно быть проблемой. Есть ли какие-либо предположения, что вызывает эту разницу во времени выполнения?
Примечание: количество элементов в списке и словаре также составляет 2500.