- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
//java.io.Bits
static void putDouble(byte[] b, int off, double val) {
long j = Double.doubleToLongBits(val);
b[off + 7] = (byte) (j >>> 0);
b[off + 6] = (byte) (j >>> 8);
b[off + 5] = (byte) (j >>> 16);
b[off + 4] = (byte) (j >>> 24);
b[off + 3] = (byte) (j >>> 32);
b[off + 2] = (byte) (j >>> 40);
b[off + 1] = (byte) (j >>> 48);
b[off + 0] = (byte) (j >>> 56);
}
смотрю а там аффтар то ли китаец то ли индус :D ))
то есть по возможности как можно меньше писать и переписывать, именно для этого придумали циклы, процедуры, ООП и прочее
http://cr.openjdk.java.net/~martin/webrevs/openjdk7/Bits.java/src/share/classes/java/io/Bits.java.cdiff.html
Вполне здраво. Это полезно для инлайнинга, например.
В чём там юмор-то?
и если да то почему?
вот например было:
а стало:
ЗЫ и кстати мне похер, что вы минусуете все мои посты.
до оптимизации
после оптимизации
да налицо умение использовать уже написанные функции
но до циклов мы еще не доросли, следующая оптмизация уже с циклом
ужмет код до 3-х строк, то есть каким он должен был написан изначально
и это нам выдадут за невъебенно солидную оптимизацию и серъезную работу кодеров ))
то же с остальными функциями
если вы уважаемый Уебкилл не видите очевидного говнокода, мне ниче больше не остается как минуснуть глупый комент
так понятно почему минисую?
что меньше займет места
цикл или 8 строк говна?
но до циклов мы еще не доросли
дебил, брэнчинг только замедляет ход, нафиг циклы?
насчёт убирания нулей - компиляторы разные могут быть, могут быть тупые, что реально добавят push 0; add
все с вами ясно
стоп!
мы боремся за уменьшение размера для инлайна или как?
будьте последовательным
тогда надо убрать вызов putLong - это ж в стек надо ложить а потом доставать - явное снижение скорости
завтра когда они напишут это циклом вы скажете что так и надо потому что инлайны бла бла бла
то есть если у вас 10 раз одно и тоже действие вы его так 10 раз и пишете из-за бренчинга?
индусском подходе быстро забивается
мы пытаемся балансировать между.
так или иначе, бессмысленный спор без конкретных бенчмарков
в принципе да
но циклы однозначно выглдят красивее и писать их легче
1. в примере 8 итераций у вас 6
вы б еще 2 итерации взяли и сказали что циклы отстой
2. это си, а не ява
3. в си тестят юзая rdtsc - так точно можно узнать что и как
и эта проверьте как замедляет код вызов процедуры
gcc -O3, 1 миллиард раз вызвав:
развёрнуто 531 мс
цикл 6172 мс
вы русский язык понимаете?
6 итераций != 8
i * 2 - к чему это?
умножение дольше сдвига
прошлый тест был получше - количество итераций надо только было увеличить до 8 и использовать rdtsc
7734 мс -- цикл (f1)
3437 мс -- развёрнуто (f2)
но это именно что голое сравнение, если нам нужно решить задачу, то нам придётся высчиьываьб дополнительно аргумент сложения или сдвига, т.е. на практике-то дольше всё будет.
развёрнуто - 1469
цикл - 8891
у парниш нет фантазии
потому что глупые вопросы задаешь
я ж написал сверху java.io.Bits
кэп даже предоставил линк на JavaDoc
http://www.docjar.com/html/api/java/io/Bits.java.html
И в названии языка опечатка -- язык ведь javascript называется.
Мы с Денисом Поповым применяли его на нашем принципиально новом веб-сайте.
Правда что такое "byte[]" мне не понятно -- я таких квадратных скобочек еще не видел. Видимо эту программу я еще не знаю, но ничего -- выучу!