Улучшение производительности с помощью rand () - PullRequest
1 голос
/ 23 апреля 2019

Я управляю симуляцией Монте-Карло модели Изинга. В целом код довольно эффективен. Функция ниже вызывается около 10 миллионов раз:

function stepFlip(sim::Ising)
    i = rand(1:sim.n)
    j = rand(1:sim.n)

    dE = dEnergy(i, j, sim)

    if dE < 0 || rand() < exp(-dE/sim.T)
        sim.spins[i,j] *= -1
    end
end

Есть ли способ оптимизировать генерацию случайных чисел, что занимает большую часть времени выполнения? Я знаю, что было бы быстрее предварительно сгенерировать их все и просто прочитать их, как я вызываю stepFlip, но стоит ли выделять всю эту память, если моя цель - производительность?

...