Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.11.2012, 21:43
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

отрисовка большого кол-ва картинок на canvas
вот не много запутался как лучше сделать,
на канве отрисовуется довольно много раз одна и таже картинка и что бы не загружать ее каждый раз заново написал такой код
var imgCache = loaded[type.bg];

              if (!imgCache) {

                      var img = new Image();
                      img.src = type.bg;
                      
                      
                      img.onload = function () {
                          drawImg.call(this, x, y, width, height);
                      };
                     
                       loaded[type.bg] = {
                          obj: img,
                          loaded: false
                      };

                      img = null;
                  }

                  else {
                    
                  if (imgCache.loaded)
                      ctx.drawImage(imgCache.obj, x, y, width, height);


                  else {

                      if (!imgCache.sub) imgCache.sub = [];

                      imgCache.sub.push(function () {//"подписка" на загрузку картинки
                          ctx.drawImage(imgCache.obj, x, y, width, height);
                      });
                  }
                      

                  
              }

              function drawImg(x,y,width, height) {

                  loaded[type.bg].loaded = true;// картинка загружена
                 
                  ctx.drawImage(this, x, y, width, height);

                  var sub = loaded[type.bg].sub;

                  for (var i = 0; i < sub.length; i++) sub[i]();// вызов "подписчиков"
              };

или через кэш браузера будет быстрей?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2 (permalink)  
Старый 04.11.2012, 21:49
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от cyber
или через кэш браузера будет быстрей?
что мешает протестить на время исполнения в разных браузерах самому?
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2012, 21:54
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

то что не совсем понимаю как, если нужно протестить выполнение какого то действие то можно циклов прогнать 2 варианта
var d = new Date();
for(...)fnc();
var res = new Date() - d;

а тут проблема в том что нужно ждать загрузки картинок и прост прогнать не получиться, а в голову нечего приходит
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #4 (permalink)  
Старый 04.11.2012, 22:15
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

для канвы
var img = new Image();
img.src = type.bg;
var d = new Date();

....
img.onload = function () {
for(var i=1000;i-- ; ) {
drawImg.call(this, x, y, width, height);
// запускаем перерисовку . у канвы можно offsetHeight запросить

}

};
для вставки через тег имидж -обычные в цикле
изменение src onload , перерисовка

скрипт и отрисовка идут в одном потоке -так что замерять можно
var img = new Image();
img.src = type.bg;
и просто подстановка картинки будут брать картинку из кеша если она там есть
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2012, 22:27
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

я чет тупонул, только что вспомнил что в хроме можно посмотреть скорость загрузки файлов и все остального.
для хрома:
-При первой загрузке разница огромная.
-При второй в несколько раз меньше .
- При третей и дальнейших грузиться с кеша , т.е время загрузки == 0
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2012, 22:41
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

сор, за тему, но часто бывает что до меня доходит когда я ее уже создал=(
а насчет кэша , по тому что вижу лучше с ним так как первая загрузка самая главная и разница очень большая и это только для 5 картинок.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #7 (permalink)  
Старый 04.11.2012, 22:50
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от cyber
- При третей и дальнейших грузиться с кеша , т.е время загрузки == 0
хром оптимизирует скрипты-отсюда и разница.после первой из кеша , если он включен
Ответить с цитированием
  #8 (permalink)  
Старый 04.11.2012, 23:04
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

dmitriymar, вот тестовые страницы с кэшем
http://cyberua.16mb.com/paint/cache.html
без него:
http://cyberua.16mb.com/paint/withoutCahe.html
если не тяжело можете в хроме запустить и сказать какая быстрей, а то как то странно хром себя ведет ?!
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.

Последний раз редактировалось cyber, 04.11.2012 в 23:11.
Ответить с цитированием
  #9 (permalink)  
Старый 04.11.2012, 23:10
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от dmitriymar
хром оптимизирует скрипты-отсюда и разница
ответ был ранее)
Ответить с цитированием
  #10 (permalink)  
Старый 04.11.2012, 23:29
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от dmitriymar Посмотреть сообщение
ответ был ранее)
да я понял это, но причем оптимизация к тому что каждый раз разный результат, то быстрей к кэшем то без (кэш брузера очищаю перед каждой загрузкой страници)
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск