Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вопрос о производительности (https://javascript.ru/forum/misc/28076-vopros-o-proizvoditelnosti.html)

macdack 06.05.2012 20:54

вопрос о производительности
 
задачка:

есть 5-10 миллионов элементов-блоков каждый из которых имеет свой скрипт постоянно меняющий его цвет+прозрачность+положени е

как думаете - выдержит ли среднестатистический процессор эту нагрузку?

хочу примерно оценить, чтобы далее уже пробовать реализовать задумку

Kolyaj 06.05.2012 20:57

5-10 миллионов блоков без всяких скриптов будут тормозить. А изменение прозрачности у каждого просто повесят браузер.

macdack 06.05.2012 21:04

средестатистическое разрешение экрана - миллион пикселей (допустим)

каждый из них имеет скрипт который меняет цвет+прозрачность+положени е

- будет работать?

Kolyaj 06.05.2012 21:22

Ставлю на то, что будет очень сильно тормозить.

dmitriymar 06.05.2012 21:35

у меня 240 000 дивов браузер вешали. а плюс ещё вопрос -сценарий выполняется более 30 сек -продолжать да/нет

Gvozd 06.05.2012 21:44

Цитата:

Сообщение от macdack
средестатистическое разрешение экрана - миллион пикселей (допустим)

каждый из них имеет скрипт который меняет цвет+прозрачность+положени е

- будет работать?

Вы рисовать хотите?
Если да то рисуйте в канвасе - он более к этому приспособлен, чем куча DIV_ов

macdack 06.05.2012 22:13

понял

тогда вопрос по канвасу -

поддерживает ли он прозрачность? ну тоесть чтобы в прямоугольной области были закрашены только некоторые пиксели. и с переменной прозрачностью

то есть чтобы организовать слои как фотошопе

канвас выдержит такую нагрузку?
если например несколько слоев по фул хд каждый, с переменной прозрачностью каждого пиксела и переменным цветом каждого пиксела

dmitriymar 06.05.2012 22:17

Да. тяжело доки поискать и почитать?

macdack 06.05.2012 22:19

спасибо за любезный ответ

dmitriymar 06.05.2012 22:21

Цитата:

Сообщение от macdack
спасибо за любезный ответ

незачто,а за хамство прикрытое типа сарказмом -добавлю

macdack 06.05.2012 22:32

не было там никакого хамства - вам показалось
зуб даю

macdack 06.05.2012 22:33

чо на самом деле не будет тормозить?

dmitriymar 06.05.2012 22:36

чего ей тормозить,если она для этого предназначена?

macdack 06.05.2012 22:40

дык 10 мильёнов пикселей и в каждом скрипт..

ну ладно. верю. спасибо

dmitriymar 06.05.2012 22:41

Цитата:

Сообщение от macdack
дык милионы пикселей и в каждом скрипт..

это разные технологии.

vadim5june 06.05.2012 22:57

Цитата:

Сообщение от macdack (Сообщение 173030)
понял

тогда вопрос по канвасу -

поддерживает ли он прозрачность? ну тоесть чтобы в прямоугольной области были закрашены только некоторые пиксели. и с переменной прозрачностью

то есть чтобы организовать слои как фотошопе

канвас выдержит такую нагрузку?
если например несколько слоев по фул хд каждый, с переменной прозрачностью каждого пиксела и переменным цветом каждого пиксела

В канвасе есть возможность работать с каждым пикселем-задавая ему цвет и прозрачность в формате rgba
putImageData ImageData createImageData итд
Однако Вы пишите о 10 миллонах пикселей-это в нескольких слоях чтоли?
все зависит от того за какое время надо обработать их
Вот здесь хороший прмер попиксельной работы в канвасе http://jsfiddle.net/UF4PK/

Раед 06.05.2012 23:39

Цитата:

Сообщение от macdack
дык 10 мильёнов пикселей и в каждом скрипт..

Что значит "в каждом скрипт"? Как вы собираетесь в пиксель скрипт засунуть? ))

9xakep 07.05.2012 00:21

Раед,
нет, он имел ввиду, что для каждого пикселя предназначен скрипт, только зачем...

Раед 07.05.2012 00:42

Цитата:

Сообщение от 9xakep
только зачем...

Во-во, ведь в одном же цикле можно по всем пикселям канваза пробежаться и сделать что надо.

macdack 07.05.2012 10:41

Цитата:

Сообщение от Раед (Сообщение 173054)
Во-во, ведь в одном же цикле можно по всем пикселям канваза пробежаться и сделать что надо.


задачка примерно такая - в разных местах канваса разные фрагменты анимации пикселов
у каждого своя частота смены "кадров" анимации
поэтому я и говорю - каждым участком управляет свой код js

как это организовать архитектурно покане представляю как

Раед 07.05.2012 10:59

macdack,
Canavas - это в принципе обычно MVC. Информацию о каждом фрагменте храните в переменных (или объектах) и осуществляете действия над этими переменными. А отрисовку на канвазе выполняйте в интервале с фиксированной частотой (лучше с минимальной частотой анимации).

dmitriymar 07.05.2012 11:05

Цитата:

Сообщение от Раед
А отрисовку на канвазе выполняйте в интервале с фиксированной частотой (лучше с минимальной частотой анимации).

будтобы нельзя обновлять разные участки канвы с различной частотой..

Раед 07.05.2012 11:07

Цитата:

Сообщение от dmitriymar
будтобы нельзя обновлять разные участки канвы с различной частотой..

Можно, но вдруг они накладываются друг на друга

macdack 07.05.2012 11:13

всё же мне видится небольшой код (например просто массив) к каждом из задействованных пикселов (их может быть немного)

каждый пиксел переодически просматривается и перерисовывается
переодичеки - наверное как в обычном видеофайле, например 60 раз в секунду

vadim5june 07.05.2012 11:15

Цитата:

Сообщение от macdack (Сообщение 173069)
задачка примерно такая - в разных местах канваса разные фрагменты анимации пикселов
у каждого своя частота смены "кадров" анимации
поэтому я и говорю - каждым участком управляет свой код js
как это организовать архитектурно покане представляю как

Я примерно так бы сделал
Для кажого фрагмента получаем растровые данные(специальный объект) из указанного прямоугольника с помощью ImageData getImageData(x,y,w,h)
Далее получаем отсюда массив-пикселей в формате rgba
Производим необходимые манипуляции и периодически выводим обратно с помощью команды putImageData(ImageData idata,x,y)
Ну и так для каждого фрагмента

Раед 07.05.2012 11:26

Цитата:

Сообщение от macdack
например 60 раз в секунду

60 раз в секунду - это каждые 16 миллисекунд! Даже при использовании канваза это издевательство над процессором.

macdack 07.05.2012 11:36

Цитата:

Сообщение от Раед (Сообщение 173081)
60 раз в секунду - это каждые 16 миллисекунд! Даже при использовании канваза это издевательство над процессором.

ну это я так, для красново словца, вспоминая аватара 60герц ))

конечно же если будет перегруз то можно обойтись каким нибудь традиционным минимумом 20 - 30 герц

но при более высоких частотах подозреваю появятся возможности для более выразительных анимационных эффектов

опять же не стоит отбрасывать возможность 3д просмотра в очках

vadim5june 07.05.2012 11:41

Цитата:

Сообщение от macdack (Сообщение 173082)
опять же не стоит отбрасывать возможность 3д просмотра в очках

Если речь идет о 3d то стоит посмотреть на webgl-там скорость намного выше потому что видеокарта задействована
Но webgl не кроссбраузерный-microsoft вообще нехочет поддерживать

melky 07.05.2012 11:51

Цитата:

Сообщение от Раед (Сообщение 173081)
60 раз в секунду - это каждые 16 миллисекунд! Даже при использовании канваза это издевательство над процессором.

используйте requestAnimationFrame - исполнение функции перед reflow. есть везде, где есть канвас.


Часовой пояс GMT +3, время: 06:38.