Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> chto rabotaet bystree? optimizazija.. 
:(
    Опции темы
polosatij
  Дата 10.11.2004, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



narod.. chto rabotaet bystree?

Код

 boolean a1, a2, a3, a4...=false, true, false, false...;
 if (a1 || a2 || ...) {return;}


ili

Код


for (int i=0; i<=(kolichestvoPeremennyh=20); i++) {
  if (peremennaja[i]) {return;}
}



smile

prichem u menja peremennyh primerno 20.. i mozhno i tak i etak.. no poskol'ku zagruzka prozessora prosto podletela v poslednee vremja, nado optimirovat'..

probegaet li on v pervom sluchae vse peremennye? a1, a2, a3 i t.d.? ved', kak izvestno vse vyrazhenie mozhno opredelit' esli uzhe v pervyh dvuh popadetsja vyrazhenie true! t.k. posledujushie false ne povlijajut na vyrazhenie sovsem.. JAVA eto ponimaet?

mne kazhetsja for.. bystree.. tak kak chuvstvoe moe serdze, chto net v pervom vyrazhenii pravdy.. kak vsegda upustili ili zabyli.. ja oshibajus'?


--------------------
PM   Вверх
Domestic Cat
Дата 10.11.2004, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



первое выражение будет быстрее, т.к. не будет приращения переменной i.
Цитата
Java ето понимает?


Да, ибо оператор || определен именно так: если первое выражение true, то остальные не оцениваюся.

Сомневаюсь, правда, что это даст хоть какой-тo выигрыш в скорости smile

Это сообщение отредактировал(а) Domestic Cat - 10.11.2004, 19:30


--------------------

PM   Вверх
polosatij
  Дата 11.11.2004, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



vopros N2: chto rabotaet bystree smile
Код


// zifry spezialno dlja primera!
  int a1=2;
  int a2=3;

//smotrim, kakoe chislo bolshe, kakoe menshe:
   int jaMenshe= a1;
   int jaBolshe= a2;

   if (a1 < a2){
     jaMenshe= a1;
     jaBolshe= a2;
   }
//   1.
   for (int a = jaMenshe; a < jaBolshe; a++){..}



Код

//   2.
   for (int a = (a1<a2)? a1:a2; a < ((a1>a2)? a1:a2); a++){..}
   


kak okazalos' vtoroj primer zanimaet bol'she mesta na diske smile
a chto rabotaet bystree smile
est' li eshe kakie luchshie varrianty reshenij smile


Добавлено @ 17:04
mlin.. ja po zaparke, kod nemnogo ne pravil'no napisal.. smile kto uvidel oshibku:

Код

  if (a1 > a2){   // a ne a1<a2 (!) t.k. eto prosto povtorenie
    jaMenshe= a2;    // i sdes'..
    jaBolshe= a1;   // i sdes' tozhe naoborot
  }



--------------------
PM   Вверх
DarkDS
Дата 11.11.2004, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



Код

for (int a = (a1<a2)? a1:a2; a < ((a1>a2)? a1:a2); a++){..}

Это будет дольше, так как при проверке каждый раз вычесляется ((a1>a2)? a1:a2)
PM MAIL   Вверх
Domestic Cat
Дата 11.11.2004, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Вообщe-тo одна тема - один вопрос.

Ну и пo-моему, такие оптимизации ничего не дадут. Развe что это внутри какого-то цикла повторением в 100,000 раз smile


--------------------

PM   Вверх
polosatij
Дата 11.11.2004, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



Цитата(Domestic @ 11.11.2004, 17:25)
Вообщe-тo одна тема - один вопрос.


imenno =) u menja tema to odna smile

Цитата(Domestic @ 11.11.2004, 17:25)
Ну и пo-моему, такие оптимизации ничего не дадут. Развe что это внутри какого-то цикла повторением в 100,000 раз smile


da! na horoshem prozessore smile ja nedavno peresel s 2000Ghz na 1000Ghz i obnaruzhil, chto moe prilozhenie niFiga ne pr'e't pod etot prozessor! -> myschka pri klike zavisaet na 1/2 sekundy i eto zametno! smile

mne kazhetsja, esli ja hotjamby vyigraju snizhenie zagruzki peremennyh v registry prozessora i umen'shu razmer *.class (pust' dazhe s kazhdym kusochkom hotjaby na 20-50 bajt), to ja uzhe vyigryvaju, poschitav paru KB na vyhode.. i chem sel'nee - tem luchshe..

vot.. uzhe iz optimirovannyh 40KB, sdelal 38 smile vidny nebol'shie uluchshenija smile no tol'ko nebol'shie smile i eto eshe dazhe ne seredina raboty! (budut eshe 50-100KB) ved' u menja rech idet o Java-Applete.. i ja hochu ras4ityvat' na modem i prozessor s malen'kimi "oborotami"..


--------------------
PM   Вверх
Domestic Cat
Дата 11.11.2004, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата
da! na horoshem prozessore  ja nedavno peresel s 2000Ghz na 1000Ghz i obnaruzhil, chto moe prilozhenie niFiga ne pr'e't pod etot prozessor! -> myschka pri klike zavisaet na 1/2 sekundy i eto zametno! 


плохo делo. но проблемы тогдa не с такими мелочами, а с чем тo другим. я пускал довольно ресурсоемкие Java приложения нa Celeron-400 / 128 - работаюt не хуже чем нa G4.

Цитата
mne kazhetsja, esli ja hotjamby vyigraju snizhenie zagruzki peremennyh v registry prozessora i umen'shu razmer *.class (pust' dazhe s kazhdym kusochkom hotjaby na 20-50 bajt), to ja uzhe vyigryvaju, poschitav paru KB na vyhode.. i chem sel'nee - tem luchshe..


при такиh проблемах уменьшениe размера нa 20 байt не поможet smile дa и этo прощe можнo сделать: обфускатором.

А что зa приложение такое ?


--------------------

PM   Вверх
polosatij
  Дата 11.11.2004, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



Domestic Cat, a gde sdes' translit? postojanno vse govorjat, ja ne vizhu chto-to linka na nego smile poproboval cherez "poisk" -> tozhe nichego.. smile

Цитата(Domestic @ 11.11.2004, 19:23)
но проблемы тогдa не с такими мелочами, а с чем тo другим.


u menja vs'e' zavisaet na classe ImageFilter, kogda ja pererisovyvaju kartinku: 600*500, posle togo, kak user nazhal na kartinku. zvet - nazhatyj user-om dolzhen stat' krasnym.. v prinzipe, ja nachinaju uzhe dumat' o razbivke kartinki na chasti.. ili na pererisovki tol'ko chasti - no sdes' problema.. etu chast' nuzhno budet nalozhit', a sverhu eshe polozhit'.. koroche - maroka..


Цитата(Domestic @ 11.11.2004, 19:23)
дa и этo прощe можнo сделать: обфускатором.


chto eto za slovo takoe strashnoe? smile


Цитата(Domestic @ 11.11.2004, 19:23)
А что зa приложение такое ?


igrushku delaju smile



--------------------
PM   Вверх
Domestic Cat
Дата 11.11.2004, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата
u menja vs'e' zavisaet na classe ImageFilter, kogda ja pererisovyvaju kartinku: 600*500, posle togo, kak user nazhal na kartinku. zvet - nazhatyj user-om dolzhen stat' krasnym.. v prinzipe, ja nachinaju uzhe dumat' o razbivke kartinki na chasti.. ili na pererisovki tol'ko chasti - no sdes' problema.. etu chast' nuzhno budet nalozhit', a sverhu eshe polozhit'.. koroche - maroka..


а картинкa одna и тa же? тогda можно былo бы заранее еe сделать smile но здесь ничегo нe сделаеш' видимо, рисунок большой, и время тратится на его преобразование.

Цитата
chto eto za slovo takoe strashnoe? 


это программа, которая делает код class файлов трудночитаемыm (если кто захочет их декомпильнуть). В частности, например, меняются названия переменных на бессмысленные
(скажем currentTime на a1). При этом размер класс файлов естественно уменьшается.
Цитата
Domestic Cat, a gde sdes' translit? postojanno vse govorjat, ja ne vizhu chto-to linka na nego  poproboval cherez "poisk" -> tozhe nichego.. 


рядом с кнопкой B (I , U, ...) слева есть чекбокс "транслит". нажми на него и набирай текст сообщения.


--------------------

PM   Вверх
polosatij
Дата 11.11.2004, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



ё маё smile а слона то я и не заметил smile

Цитата(Domestic @ 11.11.2004, 20:32)
а картинкa одna и тa же? тогda можно былo бы заранее еe сделать


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

Цитата(Domestic @ 11.11.2004, 20:32)
рисунок большой, и время тратится на его преобразование.


так не пойдет, я уже пол года на мой проект убил smile

Цитата(Domestic @ 11.11.2004, 20:32)
например, меняются названия переменных на бессмысленные


в смысле String-и? ведь яве вроде всё равно как переменные называются, ведь переменные - это для людей!


--------------------
PM   Вверх
Domestic Cat
Дата 11.11.2004, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата
в смысле String-и? ведь яве вроде всё равно как переменные называются, ведь переменные - это для людей!


дa smile
Цитата
картинка первая, начальная одна и та же, но результаты разные.. результаты после нажатия


а сколькo возможных вариантов?


--------------------

PM   Вверх
polosatij
Дата 11.11.2004, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



Цитата(Domestic @ 11.11.2004, 20:50)
а сколькo возможных вариантов?


всего лишь на всего 100 smile

а может ли какой класс в яве резать картинки?
например, я отрежу у картинки только тот кусок что мне нужно (естественно очень быстро и не буду перебирать каждый пиксель), а затем там изменю цвет и положу преобразованную картинку поверх smile

ты не встречал такие классы smile



--------------------
PM   Вверх
Domestic Cat
Дата 11.11.2004, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Самый быстрый способ был бы наверное такой:

Код

doubleBuffer = new BufferedImage(
               image.getWidth(), image.getHeight(),
               BufferedImage.TYPE_INT_RGB);
doubleBuffer.getGraphics().drawImage(image, 0, 0, null);
DataBuffer dest =
               doubleBuffer.getRaster().getDataBuffer();
short[] doubleBufferData = ((DataBufferUShort)dest).getData();


ну и вырезать иz массива нужный кусок, преобразовать егo, и записать назад.

Можнo попробовать сделать прощe: создать BufferedImage нужного размера (маленький), нарисовать в негo исходный имидж так, чтобy в BufferedImage попаl нужныj кусok:

imagePart.getGraphicscs().drawImage(image, -x, -y, null);

преобразовать его, и нарисовать в исходный имидж

image.getGraphicscs().drawImage(image, x, y, null);


--------------------

PM   Вверх
polosatij
Дата 11.11.2004, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



Цитата(Domestic @ 11.11.2004, 19:23)
плохo делo. но проблемы тогдa не с такими мелочами, а с чем тo другим.


это понятно.. но суммируя мы получаем многое..


--------------------
PM   Вверх
TrivialCore
Дата 12.11.2004, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Кстати, "зависание" кнопки - постоянное явление, когда при ее нажатии выполняется сложный (долгий) процессинг в том же потоке. Чтобы избежать, можно (нужно) создавать новый поток, в котором весь процесс связанный с этой кнопкой будет происходить. Это не ускорит прогу, но улучшит ее с точки зрения юзера и его нервов smile .
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.