>> Составило (очень грубо) 0m0,069s
>> Потом порекомендовали использовать JIT, что замедлило вычисление в 10 раз.
> Как мерял? Время компиляции кода jit'ом включено в эти 0,069 сек? Что-то
> мне подсказывает, что да.По ссылке указано.
$ cat fibonacci.js
#!/usr/bin/nodefunction fib(n) {
let a = 1;
let b = 1;
for (let i = 3; i <= n; i++) {
let c = a + b;
a = b;
b = c;
}
return b;
}
console.log(fib(77));
$ time ./fibonacci.js
5527939700884757
real 0m0,069s
user 0m0,041s
sys 0m0,030s
C JIT в следующем сообщении https://www.opennet.ru/openforum/vsluhforumID3/125336.html#132
$ time node --always-opt ./fibonacci.js
5527939700884757
real 0m0,703s
user 0m0,636s
sys 0m0,069s
> Если так, то для "честного" сравнения с
> C, надо приплюсовать в него время компиляции C'шного кода.
Это сравнение не с Си. Интерпретатор встраиваемый, его нет в виде самодостаточного приложения. Что бы исполнить сценарий на JS, надобно файл считать или заэмбеддить; я выбрал последний вариант. Не вполне корректно, поскольку не учитывается чтение файла Нодой, но при такой разнице в результатах погрешностью измерений решил пренебречь.
> Ну, или если хочешь, я могу сказать иначе: ты взял какой-то искусственный
> тест производительности, и почему-то считаешь его результаты переносимыми на больший класс
> ситуаций.
Всё немного проще. Внизу приписка "на данной задаче..." :) Вчера Анонимом (по-моему, Урри) заявил, что JS в браузерах пожёг гигаваты. Ему возразили, что учёные с Питоном потратили больше, а JS самый быстрый. Я взял что подвернулось под руку и сравнил, но не с Питоном, а со своим интерпретатором. Сегодня читаю эту тему, вспомнил вчерашние "тесты" и решал немного разбавить негатив.
> Переносимость результатов -- это большая проблема, до недавнего времени её
> называли "внешней валидностью" исследования, и это было сплошное гуманитарное размахивание
> руками. Сейчас ты можешь почитать The Book of Why, писанную старым
> евреем Judea Pearl (я очень рекомендую: он хоть и математик, но
> писал книгу для ГСМов всяких, поэтому формулы там хоть и есть,
> но не все, и при этом изложения алгоритмов нет, они лишь
> упомянуты, и вывода формул нет, и доказательств теорем нет, вместо них
> рассуждения, которые будут понятны и ребёнку), и он там это "внешней
> валидности" расширяет, называет "переносимостью" (transportability), и предлагает математические
> методы оценки этой переносимости.
Спасибо.