Сильно ли использование srand(time(NULL)) замедляет код, если эта функция выполняется в цикле наряду с остальным кодом? (примерно 10000 итераций в секунду, комп обычный)
Функция rand() будет использоваться ~500 000 000 раз
Главное - если в цикле, который выполняется 1000 итераций в секунду, выполнять srand, вы будете получать по 1000 одинаковых "случайных" чисел.
rand() вычисляет очередное случайное число на основании предыдущего значения, ну, а srand это предыдущее значение устанавливает. Поскольку обычно time(NULL) возвращает значение времени в секундах, получается, что в пределах одной секунды все ваши rand() будут одинаковы. Да и в разные секунды получаемые числа могут быть не случайны - все же они получаются из последовательных значений.
srand(time(NULL)) должен вызываться один-единственный раз.
Чтобы оптимизировать код, эту функцию стоит вызвать 1 раз перед циклом, все равно при каждом запуске программы рандомизация будет разной. Кстати желательно использовать вместо NULL nullptr . Ну и соответсвтенно оптимизация будет равна = (кол-во итераций)*(кол-во тиков для выполнения функции). Сколько тиков стоит эта функция я не знаю, однако т.к. она в цикле постоянно вызывается, должна стоить в сумме дорого.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей