IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   какие операции выполняются быстрее? (http://www.imho.ws/showthread.php?t=87202)

aramis 08.06.2005 14:48

какие операции выполняются быстрее?
 
имеем:
int[] a=new int[100];
boolean[] b=new boolean[100];
a[25]=-1;
b[25]=true;

1--------------------
if (a[25]==-1)........;
---------------------

2--------------------
if (b[25])..............;
---------------------
что быстрее: 1 или 2? в смысле какое условие проверится быстрее?
ето всё в яве и на 16 мегагерц проце с 32 кб оперативки.

ешё один вопрос, не такой важный, но вдруг у кого-нибудь будет классная идея ;)
имеется поле 10*10 квадратов и робот(лего, но ето не важно), который ездит по етому полю используя линии и 2 световых сенсора. в начале соревнования роботу передаются координаты перекрёстков на которых расположены "мины" и "сокровиша". задача: собрать все сокровиша не задев ни одной мины за минимальное время. сейчас мы просто вычисляем ближайшее сокровише и едем к нему( с помошью алгоритма дайкстры). остаётся решить travelling salesman problem на 32 кб оперативки ;)
может у кого есть идеи, как ето сделать ефективнее, чем сейчас?

p.s. esli interesno http://callisto.informatik.fh-nuernberg.de/index.php?id=manhattan05
http://callisto.informatik.fh-nuernberg.de/index.php?id=manhattan-muenchen05

Naked 08.06.2005 15:12

Скорее всего второе, логические операции выполняются всегда быстрее. Просто в данном случае выигрыш в этом будет не очень большой, потому что обе операции выполняются за ничтожное время и по сравнению с другими на время их выполнения можно забить... :( Хотя если этих операций ОЧЕНЬ много, то может во времени выигрыш небольшой и получится. :) Да, забыл, алгоритм Дейкстра точно не самый лучший, сейчас не помню, какой можно применить, подумаю...

Melkor 08.06.2005 16:24

Етот алгоритм далеко не самий лутший, с другой сторони у тебя огранишена памят.
Алгоритм Дейкстры действително достаточно еффективен. Но !! он разработан для поиска пути в произволном графе, когда о структуре графа ничего неизвестно заранее. У тебя же известно што некоторие догоги "глухие"
Попробуй лутше "волновой алгоритм", насколко я понял препятствия двигатся не могут, знашит пойдет. Правда не уверен што он будет лутше.

/7y3uK 08.06.2005 17:38

1. В джаве происходит работа с объектами... принято различать простые типы и объекты. Такая проверка будет выполняться примерно одинаково по времени и по ресурсам, т.к. это массивы простых типов. И если мне не изменяет память то булька внутри байткодов классов эквивалентна int 1 или 0. но это на Java2SE. На эту тему нужно смотреть доки джавамашины, под которую идет кодинг и доки SDK на котором компилится байткод.

aramis 08.06.2005 17:38

"волновой алгоритм" ничем не лучше дайкстры. а так как на роботе нету нормальной garbage collection,то и памяти тоже надолго не хватит(у нас есть вариант 32 сокровиша и 32 мины))

/7y3uK 08.06.2005 21:00

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

/7y3uK 10.06.2005 12:33

Я таки нашел на _juga.ru ссылку по поводу типов данных... переведенная спецификация на первую версию джавамашины...
_http://www.uni-vologda.ac.ru/java/jvm/outline.htm

Цитата:

Виртуальная машина не содержит отдельных инструкций для типов boolean. Вместо этого, используются инструкции для целых, включающие целочисленный return, используемый для работы с логическими переменными;

Hex0gen 10.06.2005 17:57

aramis какой у тебя крутой робот (с джавамашиной).
Советую не заниматься низкоуровневой оптимизацией, а поискать нормальный алгоритм. На яве (особенно на той, которая испольуется в телефонах и роботах) все очень медленно, поэтому тебя спасет только высокоуровневая оптимизация (хорошие алгоритмы).

Diff 24.06.2005 16:14

На яве в телефонах все как раз быстро, это телефоны медленные...
А выполнятся будет одинаково быстро (или одинаково медленно)


Часовой пояс GMT +4, время: 14:18.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.