Ответ 1
Несколько быстрых комментариев:
-
Путь
/usr/local/bin/r
произволен, вы можете использовать/usr/bin/env r
, как и в некоторых примерах. Насколько я помню, он ограничивает другие аргументы, которые вы можете датьr
, поскольку он принимает только один при вызове черезenv
-
Я не понимаю ваш бенчмарк и почему вы так поступаете. У нас есть временные сравнения в источниках, см.
tests/timing.sh
иtests/timing2.sh
. Возможно, вы хотите разделить тест между запуском и созданием графа или тем, что вам нужно. -
Всякий раз, когда мы проводили эти тесты, littler побеждал. (Он по-прежнему выиграл, когда я снова запустил их прямо сейчас.) Это имело смысл для нас, потому что если вы посмотрите на источники на
Rscript.exe
, он будет работать по-другому, настроив среду и командную строку, прежде чем в итоге вызыватьexecv(cmd, av)
. littler может начать немного быстрее. -
Основная цена - мобильность. То, как littler построен, он не попадет в Windows. Или, по крайней мере, не легко. OTOH мы поместили RInside, чтобы кто-то действительно хотел...
-
Littler вышел первым в сентябре 2006 года по сравнению с Rscript, который появился с R 2.5.0 в апреле 2007 года.
-
Rscript теперь всюду, где R. Это большое преимущество.
-
Параметры командной строки немного более разумны для littler на мой взгляд.
-
Оба работают с пакетами CRAN getopt и optparse для парсинга параметров.
Так что это личное предпочтение. Я соавтором Littler, многому научился (например, для RInside) и все еще считаю это полезным, поэтому я использую его десятки раз в день. Он управляет CRANberries. Он управляет cran2deb. Ваш пробег может, как говорят, меняться.
Отказ от ответственности: littler - один из моих проектов.
Postscriptum: я бы написал тест как
Я бы написал это как
fun <- function { X <- rnorm(100); print(x); print(plot(x)) }
replicate(N, system.time( fun )["elapsed"])
или даже
mean( replicate(N, system.time(fun)["elapsed"]), trim=0.05)
чтобы избавиться от выбросов. Более того, вы по существу измеряете ввод-вывод (печать и сюжет), которые оба получат из библиотеки R, поэтому я бы ожидал небольшой разницы.