Я написал фрагмент кода DolphinDB, который умножает две матрицы с плавающим типом. И я обнаружил, что умножение dot
матриц DOUBLE было немного быстрее, чем умножение матриц FLOAT. Но этого не произошло для других операторов, таких как add
и mul
. Я хотел бы понять, почему это так.
На моем Ubuntu я проверил время выполнения операторов mul
и dot
на двух матрицах. Для оператора mul
матрицы FLOAT занимают примерно половину времени ДВОЙНЫХ, как и ожидалось. Но для оператора dot
матрицы DOUBLE были немного быстрее, чем матрицы FLOAT.
m = float(1..1000000)$1000:1000
n = float(1..1000000)$1000:1000
timer(100) { m.mul(n) }
timer(100) { m.dot(n) }
m = double(1..1000000)$1000:1000
n = double(1..1000000)$1000:1000
timer(100) { m.mul(n) }
timer(100) { m.dot(n) }
И то, что я получил, было:
Время истекло: 43,722 мс
прошедшее время: 3430,887 мс
Истекшее время: 83,137 мс
Истекшее время: 3289,049 мс