![]() |
какие операции выполняются быстрее?
имеем:
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 |
Скорее всего второе, логические операции выполняются всегда быстрее. Просто в данном случае выигрыш в этом будет не очень большой, потому что обе операции выполняются за ничтожное время и по сравнению с другими на время их выполнения можно забить... :( Хотя если этих операций ОЧЕНЬ много, то может во времени выигрыш небольшой и получится. :) Да, забыл, алгоритм Дейкстра точно не самый лучший, сейчас не помню, какой можно применить, подумаю...
|
Етот алгоритм далеко не самий лутший, с другой сторони у тебя огранишена памят.
Алгоритм Дейкстры действително достаточно еффективен. Но !! он разработан для поиска пути в произволном графе, когда о структуре графа ничего неизвестно заранее. У тебя же известно што некоторие догоги "глухие" Попробуй лутше "волновой алгоритм", насколко я понял препятствия двигатся не могут, знашит пойдет. Правда не уверен што он будет лутше. |
1. В джаве происходит работа с объектами... принято различать простые типы и объекты. Такая проверка будет выполняться примерно одинаково по времени и по ресурсам, т.к. это массивы простых типов. И если мне не изменяет память то булька внутри байткодов классов эквивалентна int 1 или 0. но это на Java2SE. На эту тему нужно смотреть доки джавамашины, под которую идет кодинг и доки SDK на котором компилится байткод.
|
"волновой алгоритм" ничем не лучше дайкстры. а так как на роботе нету нормальной garbage collection,то и памяти тоже надолго не хватит(у нас есть вариант 32 сокровиша и 32 мины))
|
хм... кстати тут на недавно прошедшей конференции в честь 10 летия джавы, была обалденно классно-полезная но жутко непонятная лекция на тему токой настройки джавамашин с помощью всяких разных ключиков, так вот там была такая фраза, что и гарбадж коллектор там оптимизировать можно для конкретных задач и джавамашину... можно при знании дела повысить эффективность (читай скорость) работы программы и эффективность работы джавамишины с памятью примерно на 30%...
|
Я таки нашел на _juga.ru ссылку по поводу типов данных... переведенная спецификация на первую версию джавамашины...
_http://www.uni-vologda.ac.ru/java/jvm/outline.htm Цитата:
|
aramis какой у тебя крутой робот (с джавамашиной).
Советую не заниматься низкоуровневой оптимизацией, а поискать нормальный алгоритм. На яве (особенно на той, которая испольуется в телефонах и роботах) все очень медленно, поэтому тебя спасет только высокоуровневая оптимизация (хорошие алгоритмы). |
На яве в телефонах все как раз быстро, это телефоны медленные...
А выполнятся будет одинаково быстро (или одинаково медленно) |
| Часовой пояс GMT +4, время: 14:18. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.