И точно, даже в данном маленьком примере матрица отработала быстрее «быстрых» таблиц:
На моём ПК в данном примере самая быстрая реализация оказалась в пакете matrixStats,
хотя есть ошибка на пределе машинной точности (от -9.095e-13 до 9.095e-13).
Согласен, что пример очень неудачный, но благодарю за примеры в пакете, о котором не знал. Сам привык выполнять параллельные расчёты в R в doParallel, который на данном примере вообще не успевал ядра нагрузить, но расчёт через %dopar% выполнился аж за 24 секунды, а при монопотоке как в публикации в 4 секунды:
При этом в более пригодном формате хранения больших таблиц (в data.table) пример считается в разы быстрее, если нам действительно нужно что-то построчно сделать:
На моём ПК в данном примере самая быстрая реализация оказалась в пакете matrixStats,
хотя есть ошибка на пределе машинной точности (от -9.095e-13 до 9.095e-13).
В data.table расчёт дольше, хотя при работе с десятками миллионов записей широких таблиц data.table меня много раз выручал.
При этом в более пригодном формате хранения больших таблиц (в data.table) пример считается в разы быстрее, если нам действительно нужно что-то построчно сделать:
Реализация в пакете future.apply у меня в разы медленнее оказалась на 3950х: