#matlab #time
#matlab #время
Вопрос:
Я работаю над алгоритмом потокового шифрования с Matlab, и я хочу видеть разницу во времени с каждым изменением, которое я внес в нелинейную функцию. Я создал нелинейную функцию, которая имеет некоторые операции «mod» и операции «bitxor», когда я меняю некоторые операции bitxor на операции mod и вычисляю время, используя «tic toc», это показывает, что новая функция с большим количеством операций «mod» выполняется за меньшее время, чем исходная, хотя mod работает медленнее, чем bitxor. В чем причина этой проблемы? есть ли альтернативный способ рассчитать время в таком случае?
Комментарии:
1. Смотрите mathworks.com/help/matlab/matlab_prog /…
2. Почему вы говорите
mod
медленнее, чемbitxor
? Очевидно, что это не так, если ваш код ускоряет замену одного другим.
Ответ №1:
Вы можете попробовать использовать собственные часы и вычислить разницу. Например:
time1 = clock;
[..Some heavy calculation here]
time2 = clock;
simtime = etime(time2, time1);
disp("time in seconds is:")
disp(simtime)
Вы избежите любой неточности из-за потенциального замедления выполнения кода.
Комментарии:
1. Я пробовал «clock», «cputime» и «timeit», но проблема не решилась.
2. Трудно принять. Он просто записывает время до и после обработки и вычисляет разницу. Что может пойти не так? даже если
tic toc
по какой-то причине возникает задержка,clock
это независимо, поскольку зависит от системного времени. Без дополнительной информации о вашем коде мы не можем указать на проблему.