Я широко использовал NetworkX для своих исследований, но я столкнулся с тем, что немного озадачивает (и касается) меня. Я использовал copy.deepcopy()
для копирования графиков, но только что понял, что класс Graph имеет свой собственный метод .copy () , который генерирует глубокую копию.
Я решил использовать %timeit
, чтобы посмотреть, был ли я гандикапом, и в итоге получил следующие результаты для графика G
с 25 узлами и 66 ребрами:
%timeit for x in range(100): copy.deepcopy(G)
80.5 ms ± 1.26 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit for x in range(100): G.copy()
93.4 ms ± 1.06 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
Что NetworkX делает по-другому, что занимает больше времени? Это беспокоит меня, что я делаю это неправильно, но я не сталкивался с серьезными проблемами, которые указывали бы на то, что использование copy.deepcopy()
- неправильный выбор.