Я спрашивал про перформанс.
А не про перформанс — пре и пост функционально разные операции и использовать нужно ту функционал которой нужен. Но если различия функционала не играют роли, то и выбор операции не играет роли.
И все равно никак не могу связать стек вызовов и ++(2 экз.)
А почему уточнял какой стек — так у нас стек в байткоде есть.
Не могу не спросить:
— «почти нет мест» — значит что хоть чуть но где есть, хочу узнать где и какие такие места для извращений есть,
— Почему ++counter должен быть быстрее?
Скорее всего привели доки в соответствие с жизнью.
Во первых в HotSpot нет шедулера. Все уходит в ОС, она пусть работает.
Отсюда — сначала у HotSpot чувствует себя free звать или не звать yield у ОСи.
Второе сама ОСь — чувствует себя free что делать на yield. Ой — я бы не связывался. ;)
Во первых — что значит негативно сказаться? А в реальном приложении? Какой смысл замерять что-то имеющее мало отношения к жизни.
Во вторых:
[JavaDoc on]
public static void yield()
A hint to the scheduler that the current thread is willing to yield its current use of a processor. The scheduler is free to ignore this hint.
[JavaDoc off]
Ну и в третих — нельшие по времени операции (десятки (иногда сотни) квантов) нужно мерять статистически — тогда кванты будут по фигу.
> Во первых она так-же как и CUDA распараллеливает задачу на большое количество ядер
Ну тогда у меня HotSpot на моем ноуте сам распаралеливает задачу на 4 ядра.
Azul распараллеливает задачу ровно настолько насколько она уже распараллелена девелопером.
final int age = db.getSales()
.filter((Sale sale)->sale.getCost() > 50000.00)
.parallel()
.<Integer>map((Sale sale)->sale.getBuyer().getAge())
.reduce(0, (x,y)-> x
Тогда фильтр последовательный, а мап и редьюс параллельные.
final int age = db.getSales()
.filter((Sale sale)->sale.getCost() > 50000.00)
.<Integer>map((Sale sale)->sale.getBuyer().getAge())
.reduce(0, (x,y)-> x<y ? x : y);
сейчас он шпарит (и будет шпарить) в один тред.
Но! Будет магический метод parallel (еще не сделан), и можно будет написать так:
final int age = db.getSales()
.parallel()
.filter((Sale sale)->sale.getCost() > 50000.00)
.<Integer>map((Sale sale)->sale.getBuyer().getAge())
.reduce(0, (x,y)-> x<y ? x : y);
final int age = Collections.min(db.getSales()
.filter((Sale sale)->sale.getCost() > 50000.00)
.<Integer>map((Sale sale)->sale.getBuyer().getAge())
.into(new ArrayList<Integer>()));
Надо:
final int age = db.getSales()
.filter((Sale sale)->sale.getCost() > 50000.00)
.<Integer>map((Sale sale)->sale.getBuyer().getAge())
.reduce(0, (x,y)-> x<y ? x : y);
Упссс. А мужики то не знают?
А как писать параллельные программы без MM?
Скажите это в частности Боэму, благодаря которому в С++0x11 таки появилась MM.
А не про перформанс — пре и пост функционально разные операции и использовать нужно ту функционал которой нужен. Но если различия функционала не играют роли, то и выбор операции не играет роли.
И все равно никак не могу связать стек вызовов и ++(2 экз.)
А почему уточнял какой стек — так у нас стек в байткоде есть.
— что такое стек? (в данном контексте)
PS Вопрошенное не относится к J2ME. И почти не относится к Android.
— а смысл передавать null? Точнее экономить 1 object?
PS Вопрошенное не относится к J2ME. И почти не относится к Android.
— «почти нет мест» — значит что хоть чуть но где есть, хочу узнать где и какие такие места для извращений есть,
— Почему ++counter должен быть быстрее?
Во первых в HotSpot нет шедулера. Все уходит в ОС, она пусть работает.
Отсюда — сначала у HotSpot чувствует себя free звать или не звать yield у ОСи.
Второе сама ОСь — чувствует себя free что делать на yield. Ой — я бы не связывался. ;)
Во вторых:
[JavaDoc on]
public static void yield()
A hint to the scheduler that the current thread is willing to yield its current use of a processor. The scheduler is free to ignore this hint.
[JavaDoc off]
Ну и в третих — нельшие по времени операции (десятки (иногда сотни) квантов) нужно мерять статистически — тогда кванты будут по фигу.
Боже!
Что вы читали (ели/пили/курили) перед сном? ;)
Ну тогда у меня HotSpot на моем ноуте сам распаралеливает задачу на 4 ядра.
Azul распараллеливает задачу ровно настолько насколько она уже распараллелена девелопером.
Тогда фильтр последовательный, а мап и редьюс параллельные.
сейчас он шпарит (и будет шпарить) в один тред.
Но! Будет магический метод parallel (еще не сделан), и можно будет написать так:
Надо:
too small.
etc.
Что означают числа в таблицах?
А как писать параллельные программы без MM?
Скажите это в частности Боэму, благодаря которому в С++0x11 таки появилась MM.