Мне нужно создать последовательность чисел в кратчайшие сроки, в идеале в диапазоне микросекунд. Общая длина этой последовательности обычно находится в диапазоне 20-100 тысяч чисел, но иногда мне нужно создать последовательность из 200-300 тысяч чисел. На данный момент я реализовал свой код на R (просто потому, что достаточно хорошо знаю язык). Предполагая, что моя последовательность должна начинаться с 1 и заканчиваться до 25 с шагом 0,0001, в R я бы сделал
s <- seq(1, 25, by = 0.0001)
Несмотря на молниеносную скорость, это занимает несколько миллисекунд.
> library(microbenchmark)
> microbenchmark(seq(1, 25, by = 0.0001))
Unit: milliseconds
expr min lq mean median uq max neval
seq(1, 25, by = 1e-04) 1.6098 2.14505 3.741858 2.2324 2.3554 83.8912 100
Вот мои вопросы:
1- можно ли ускорить генерацию последовательности в R? в идеале ‹ 0,5 миллисекунды?
2- в какой-то момент мне нужно будет реализовать код на другом (более быстром) языке, сможет ли какой-либо язык генерировать такие последовательности менее чем за 100-200 микросекунд?
seq.default
быстрее. 1) В вашем случае использования у вас есть только аргументыfrom
,to
иby
,seq.default
больше. И если вы заранее знаете, чтоfrom < to && by > 0
вы сможете упростить исходный код. 2)seq.default
написан на чистом R, взгляните на пакетRcpp
для способов использованияC++
из R. Или напишите общую библиотеку на C, C++ и загружайте ее при необходимости, например, включив в пакет R. - person Rui Barradas   schedule 08.02.2020