Pull to refresh
0
0
Send message
То есть вы считаете, что разница между вашим подходом (запуск в песочнице vm) и обычным запуском (require модуля и вызов функции) укладывается в статистическую погрешность? Можете объяснить, почему некоторые решения при вашем методе запуска работают в несколько раз медленнее? Уверен, что мое решение не единственное такое. Интересно было бы посчитать альтернативную таблицу результатов для всех участников, прошедших тест на корректность.
Проверил, действительно, если переделать тест на использование runInThisContext вместо runInContext, начинает работать в 3 раза быстрее. Понять бы еще, что именно так тормозит в не текущем контексте
Можете мой вариант (Andrew Kashta/filter.js) тоже проверить вашим скриптом?
Отвечу сам себе. Дело не в битности и не в ОС, а в способе запуска тестов. Организаторы запускают через vm, для моей реализации это почему-то оказалось критично. Безхитростный запуск отрабатывает в 2.5 раза быстрее чем через tests/test.js.
Проверил и там, и там. У меня на node x64 все решения получаются немного медленнее, но кардинальной разницы нет. Возможно, дело в ОС.
Не могли бы вы опублировать скрипты для тестов производительности? На моей машине (i5-650 3.2 GHz, win7) получаются совсем другие результаты:
  • Denis Kreshikhin — 421
  • Ilya Makarov — 468
  • Yuri Kilochek — 327
  • Sergey Golub — 359
  • Andrew Kashta — 359

Прогнал примитивный скрипт по 10 раз для каждого и выбрал лучшие результаты:
var filter = require('./submissions/Denis Kreshikhin/kreshikhin-filter');
//var filter = require('./submissions/Ilya Makarov/filter-with-memo');
//var filter = require('./submissions/Yuri Kilochek/filter');
//var filter = require('./submissions/Sergey Golub/filter');
//var filter = require('./submissions/Andrew Kashta/filter');

var input = require('./tests/large_input.json');
var start = new Date();
var result = filter.filter(input.messages, input.rules);
console.log('elapsed: ' + (new Date() - start).toFixed());


Кто-нибудь может погонять у себя скрипт? Интересны результаты в различных средах исполнения.
Выше в комментариях писали, что набор тестовых данных будет похож на содержимое почтового ящика типичного пользователя. Означает ли это, что в большинстве писем, еcли не во всех, будет фигурировать один и тот же адрес (в качестве from либо to)?
Большое спасибо BarsMonster за конкурс. Задача оказалась интересной и многогранной, разработка решения превратилась в квест, в котором нахождение каждого артефакта приводило к улучшению результата. Я тоже сделал генератор тестов и автоматический подсчет баллов, но тесты гонял вручную, автоматизировать все до конца времени не было. Поздравляю lany с заслуженной победой.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity