У меня есть код, который я запускаю для проекта. Это O (N ^ 2), где N - 200 для моего случая. Существует алгоритм, который превращает это O (N ^ 2) в O (N logN). Это означает, что с этим новым алгоритмом он должен быть в ~ 100 раз быстрее. Тем не менее, я получаю только увеличение в 2 раза (то есть в 2 раза быстрее).
Я пытаюсь сузить круг вещей, чтобы увидеть, не испортил ли я что-то или это присуще тому, как я кодировал эту программу. Для начала у меня много служебных функций во вложенных классах. Например, у меня много этого (во многих циклах):
energy = globals->pair_style->LJ->energy();
Поскольку я получаю правильные результаты, когда дело касается фактических данных, просто неправильное увеличение скорости, мне интересно, могут ли служебные сигналы на самом деле вызвать , что значительное снижение скорости, в 50 раз.
Спасибо!