1 | |
Прерывание скрипта10.09.2012, 20:29. Показов 2937. Ответов 3
Метки нет (Все метки)
Навеяно статьёй http://habrahabr.ru/post/151155/
Год назад я решил побаловаться с ген. алгоритмами, в качестве языка я необдуманно выбрал JS (а что, абстракция то позволяла и я, не имея конкретной фитнесс-функции, мог этим воспользоваться). В ответственный момент я осознал, что этап селекции, вообще говоря, склонен выполнятся долго, особенно если фитнесс функция тяжелая. Тогда я решил сделать костыль, разбивая селекцию на цепь из последовательнох вызовов фитнесс функций, связанных setTimeout(<следующая особь>, 0) после вычисления фитнесс функции предыдущей особи. Я считал, что это костыль. В связи с конкретным усложнением читаемости кода я решил написать несколько функций + объект, которые бы позволили писать в хаскелль-стиле, а именно: описывать действие как объект (по сути функция, замкнутая относительно всех аргументов, в т.ч. this), связывать действия между собою в одну цепочку последовательных действий, запускать эту цепочку, выполняя действия как функции, запуская между ними setTimeout. Теперь вопрос знатокам: Это вообще нормально использовать setTimeout для вот таких целей (разрыв тяжелой функции, чтоб не зависало)? Или есть более человечные и правильные способы?
0
|
10.09.2012, 20:29 | |
Ответы с готовыми решениями:
3
Прерывание функций в JavaScript Прерывание requestAnimationFrame при onwheel Как можно связать работу скрипта из балуна с работой скрипта на странице? Загрузка и выполнение скрипта из другого скрипта |
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
|
11.09.2012, 15:33 | 2 |
По меньше мере, имхо, это даёт право думать: «Ну я же сделал всё, что от меня зависит. Если всё равно тормозит, значит у Вас комп/браузер медленный.»
А если серьёзно, то, да, действительно, прерывистые операции из очереди таймаутов будут давать возможность выполниться, например, обработчикам событий. Да и сами браузеры тоже по-разному себя ведут при длительном выполнении сплошного скрипта.
1
|
12.09.2012, 01:11 [ТС] | 3 |
Вы правы.
С одной стороны, конечно, огорчает меня тот факт, что ариори программа, написанная на нативном языке (C, например) под ОС, выполняется быстрее, чем программа, написанная на более абстрактном языке (Java или Javascript, например) под некоторый интерпретатор (JVM или browser, соответственно, или другой какой-то исполнитель). Бывает, я пишу некоторый перебор для своих нужд без особой оптимизации и программа выполняется меньше 20 часов. Известные мне браузеры не позволяют исполнять скрипт более 10 минут. Конечно, можно сказать, что это не нужная задача: либо менять язык и среду на сходную, либо не пудрить мозги. Но всё же... В комментах к приведенной статье появилась ссылка на http://nin-jin.github.com/arti... er.doc.xml, вроде решающее эту проблему. Ограничения: только ФФ и Хром. Читаю эту статью, может там и ответ будет дан.
0
|
834 / 642 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
|
|
25.08.2013, 00:17 | 4 |
Мне кажется, для вычислительных целей больше подходит серверный джаваскрипт, например node.js.
Точно не знаю, но вроде там нет ограничения на время исполнения.
0
|
25.08.2013, 00:17 | |
25.08.2013, 00:17 | |
Помогаю со студенческими работами здесь
4
Прерывание перехода по ссылке внутри функции Прерывание :hover при перезагрузки части страницы Внезапное прерывание скрипта Утилита sqlcmd - прерывание выполнения скрипта после первой ошибки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |