>>на некоторых машинах setTimeout успеет отработать до setInterval?
Эмм... Дак, собственно, в этом и смысл :)
Вот, схематично, без переменных: setTimeout(function(){
clearInterval();
setInterval(arguments.callee, 12);
setTimeout(arguments.callee, 10);
/* Какой-то большой участок кода... */
}, 10);
setInterval(function(){
clearTimeout();
setTimeout(arguments.callee, 10);
/* Какой-то большой участок кода... */
}, 12);
Плавания не происходит :) Если setTimeout не успевает отработать в нужный момент, обязательно вызывается setInterval. В иные моменты, когда ресурсов достаточно, setTimeout отрабатывает спокойно.
Спасибо за статью.
Но у вас категорично: либо экономия процессорного времени, либо стабильность. Можно совместить варианты.
Запускаем два(!) таймера одновременно. Один setTimeout, другой setInterval. У setInterval ставим время срабатывания чуть позже, чем у setTimeout. И там, и там, в самом начале, делаем clear для альтернативы и запускаем её снова.
На первый взгляд, решение достаточно грубое, но результатом мы получим следующее: когда не успевает срабатывать Timeout, реагирует Interval, и мы получаем необходимое нам обновление, в иных случаях, Interval, со своим высоким приоритетом, отменяется, и Timeout нормально срабатывает.
На практике, в зависимости от сложности функции, отрабатывающей по таймеру, и идущих одновременно вычислений, получаем от 10 до 40 процентов прироста производительности :)
Теперь можете расстреливать за некрасивую реализацию :)
Я профан в маках, но мне, почему-то, кажется, что здесь реально найти только красивые решения. Для стандартных гугл, думаю, подойдёт больше.
И не подумайте, что я вас сразу посылаю. Просто это как-то логичней - вбить в поисковике слова а-ля "mac os x оформление", чем ждать небесной маны в виде хабропользователей :) Без обид, ладно?
Пусть запущено. Но это их рабочий стол, их вкус, их логика. Вы желаете запретить людям настраивать рабочий стол, так, как удобно им, потому что для вас это безвкусно?
Любое осветление фичи конкретного сервиса так или иначе приведёт к чему-то, подобному холивару. Зло в людях. Громко слишком сказано :) Вы в первый раз с этим сталкиваетесь в интернете? :)
Да и, наверняка, не все те, кто упомянул яндекс, пытались сказать: "гмэйл фуфло". Кто-то ведь тоже пытался поделится знанием о такой функции.
Вот, например, статья об аналогах Интернет в картинках. Там, разве, говорится о том, что изначальные сервисы - дрянь? :)
Простите меня за скептицизм, но я считаю бессмысленным писать заметку о комментариях к заметке. Споров и "обливания" не избежать. Не помогут никакие возмущенные возгласы.
Слоны-слоны. Если меня кормить только тогда, когда приемлимо нарисую, то тоже стану блистать высоким художественным стилем :)
Печально, что у слона аж хобот от старания дрожжит, боится животное сделать что-нибудь не так :( Хотя, думаю, некоторым программистам такой способ воспитания не помешал бы.
Теоретически, такой учебник возможен. Но это будет скорее физика+математика+информатика. Сейчас во всех учебниках объясняют работу конкретных программ, конкретных операционок и т.д. А вот если сделать упор на то, _как_ оно работает, рассказать о большинстве текущих принципов работы компьютера/с компьютером, то, теоретически, возможно создание достаточно полезного издания.
Впрочем, это из области фантастики, наверное :) Для создания такого учебника понадобится сотня авторов с разносторонними знаниями, да ещё и умеющими чётко и в лёгкой форме излагать то, что они понимают :)
Эмм... Дак, собственно, в этом и смысл :)
Вот, схематично, без переменных:
setTimeout(function(){
clearInterval();
setInterval(arguments.callee, 12);
setTimeout(arguments.callee, 10);
/* Какой-то большой участок кода... */
}, 10);
setInterval(function(){
clearTimeout();
setTimeout(arguments.callee, 10);
/* Какой-то большой участок кода... */
}, 12);
Плавания не происходит :) Если setTimeout не успевает отработать в нужный момент, обязательно вызывается setInterval. В иные моменты, когда ресурсов достаточно, setTimeout отрабатывает спокойно.
Но у вас категорично: либо экономия процессорного времени, либо стабильность. Можно совместить варианты.
Запускаем два(!) таймера одновременно. Один setTimeout, другой setInterval. У setInterval ставим время срабатывания чуть позже, чем у setTimeout. И там, и там, в самом начале, делаем clear для альтернативы и запускаем её снова.
На первый взгляд, решение достаточно грубое, но результатом мы получим следующее: когда не успевает срабатывать Timeout, реагирует Interval, и мы получаем необходимое нам обновление, в иных случаях, Interval, со своим высоким приоритетом, отменяется, и Timeout нормально срабатывает.
На практике, в зависимости от сложности функции, отрабатывающей по таймеру, и идущих одновременно вычислений, получаем от 10 до 40 процентов прироста производительности :)
Теперь можете расстреливать за некрасивую реализацию :)
"Я помню чудное мгновенье, передо мной открылся ты" :)
Это какие авторские права-то нарушены были? :)
И не подумайте, что я вас сразу посылаю. Просто это как-то логичней - вбить в поисковике слова а-ля "mac os x оформление", чем ждать небесной маны в виде хабропользователей :) Без обид, ладно?
Да и, наверняка, не все те, кто упомянул яндекс, пытались сказать: "гмэйл фуфло". Кто-то ведь тоже пытался поделится знанием о такой функции.
Вот, например, статья об аналогах Интернет в картинках. Там, разве, говорится о том, что изначальные сервисы - дрянь? :)
Простите меня за скептицизм, но я считаю бессмысленным писать заметку о комментариях к заметке. Споров и "обливания" не избежать. Не помогут никакие возмущенные возгласы.
Печально, что у слона аж хобот от старания дрожжит, боится животное сделать что-нибудь не так :( Хотя, думаю, некоторым программистам такой способ воспитания не помешал бы.
Впрочем, это из области фантастики, наверное :) Для создания такого учебника понадобится сотня авторов с разносторонними знаниями, да ещё и умеющими чётко и в лёгкой форме излагать то, что они понимают :)