Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
[L2P]L2ObjectArray а оно того стоит?
#21
cokol Написал:еще вопросик: что лучше юзать List или ArrayList, в чем разница?

По сути List это интерфейс.
Так что ты его заюзать не сможешь
Ответ
#22
List<Integer> list = new ArrayList<Integer>();

а вообще лучше документацию почитатьSmile
Ответ
#23
я немного не то имел ввиду. Вот пример:

PHP код:
<?php 
protected final ArrayList<ExecutedTask> _currentTasks = new ArrayList<ExecutedTask>();

PHP код:
<?php 
protected final FastList<ExecutedTask> _currentTasks = new FastList<ExecutedTask>();

Чем отличаются, что лучше? По идеи, функция что у 1 и у 2 одна и та же.
Ответ
#24
cokol Написал:я немного не то имел ввиду. Вот пример:

PHP код:
<?php 
protected final ArrayList<ExecutedTask> _currentTasks = new ArrayList<ExecutedTask>();

PHP код:
<?php 
protected final FastList<ExecutedTask> _currentTasks = new FastList<ExecutedTask>();

Чем отличаются, что лучше? По идеи, функция что у 1 и у 2 одна и та же.
Пишем какой нить бенчмарк и смотрим.
А так javolution устарел, два года уже не обновлялся.
[Изображение: l2nextgen.gif]
Ответ
#25
ALFOS Написал:TIntObjectHashMap В ключе хранит примитивный тип int, соответственно меньше кушает памяти, и процессора.
Map<Integer, StatsSet> хранит клич в Integer. Кушает больше памяти, и процессора. (конвертация с int в Integer и т д)

Integer дает оверхед, но в 7й версии есть разблокированная волшебная опция которая закеширует часть интов в объекты (пару раз спасало)
Код:
-Djava.lang.Integer.IntegerCache.high=65536

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

Код:
Double calc(Integer a, Integer b, Float c) {
   Double result = 0;
   for(int i = a ; i < b ; i ++ ) {
        result += Math.sqrt(0.5 * a * i + (a * c) / (b * c));
   }
   return result;
}

// посчитайте сколько раз компилятор будет делать боксинг xD
// added: восстановил кусок кода по памяти который встречал, a,b > 1, c 0..1





cokol Написал:я немного не то имел ввиду. Вот пример:

PHP код:
<?php 
protected final ArrayList<ExecutedTask> _currentTasks = new ArrayList<ExecutedTask>();

PHP код:
<?php 
protected final FastList<ExecutedTask> _currentTasks = new FastList<ExecutedTask>();

Чем отличаются, что лучше? По идеи, функция что у 1 и у 2 одна и та же.когда тип ссылки является интерфейсом используется инструкция invokeinterface, в других случаях invokevirtual / invokespecial.

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

Пруф http://www.javaworld.com/javaworld/jw-06...-hood.html


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

ArrayList<MyObject> params жестко вас заставит использовать ArrayList и вы не сможете сделать с этим ничего. А при использовании List<MyObject> вы сможете свободно выбирать реализацию будь то Collections.emptyList() или LinkedList<>
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#26
cokol Написал:я немного не то имел ввиду. Вот пример:

PHP код:
<?php 
protected final ArrayList<ExecutedTask> _currentTasks = new ArrayList<ExecutedTask>();

PHP код:
<?php 
protected final FastList<ExecutedTask> _currentTasks = new FastList<ExecutedTask>();

Чем отличаются, что лучше? По идеи, функция что у 1 и у 2 одна и та же.
FastList основан на такой структуре данных, как двусвязный список, ArrayList - массив. Преимущества/недостатки каждой структуры данных легко находятся в гугле.

Как-то так.
Ответ
#27
bloodshed Написал:Пишем какой нить бенчмарк и смотрим.
А так javolution устарел, два года уже не обновлялся.

На костер javolution. только google guava (trove4j как исключение если нужны большие количества коллекций примитивных типов).

http://code.google.com/p/jacobe/wiki/BenchmarksResults
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#28
Aquanox Написал:На костер javolution.
Зачем сразу на костер, для сбора статистики хорошая либа, она для этого и задумывалась, я не знаю какой умник изначально ее сунул в l2jserver и начал юзать где-попало.
Ответ
#29
Aquanox Написал:// посчитайте сколько раз компилятор будет делать боксинг xD

После JIT компиляции всего 0 раз.
Ответ
#30
G1ta0 Написал:Зачем сразу на костер, для сбора статистики хорошая либа, она для этого и задумывалась, я не знаю какой умник изначально ее сунул в l2jserver и начал юзать где-попало.
плюсанул, сам хотел что-то в этом роде написать.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Стоит ли пилить Helios? Alay 26 8,270 02-20-2017, 04:01 PM
Последний пост: FaintSmile
  Стоит ли ставить Windows на гипервизор? Hett 2 1,439 07-21-2016, 12:56 PM
Последний пост: Hett
  IRC подскажите канал для того, чтобы не перегружать нубскими вопросами xcislav 4 1,644 08-31-2013, 04:51 PM
Последний пост: darkevil
  доходит до выбора и стоит Last-Norman 1 1,372 07-31-2013, 11:51 AM
Последний пост: gorodetskiy
  Подскажите стоит брать сборку Open-team hYdR0 19 3,807 07-20-2013, 02:51 PM
Последний пост: Zeratyl
  Стоит ли на данный момент открывать проект High Five? MrFanCold 108 23,424 04-06-2013, 03:20 PM
Последний пост: Krickt105
  Обязательно ли PathNode должен быть от того же разработчика от которого и геодата? MrFanCold 3 1,812 03-23-2013, 12:26 PM
Последний пост: Dеmon
  Ошибка после того как создам итем в инвентарь. Ololowke666 1 1,305 10-29-2012, 02:25 PM
Последний пост: Zubastic
  Что скажите? Стоит того? Сервер под ключ... vtaras 9 2,686 09-19-2011, 11:48 AM
Последний пост: Place
  Ищу того кто поставит серв на Debian Lender 8 2,748 06-08-2010, 09:12 AM
Последний пост: Paranormal

Перейти к форуму:


Пользователи, просматривающие эту тему: 3 Гость(ей)