chabapok: (Default)
Sep. 21st, 2017
12:19 pm
Девятка с открытым капотом:



java9countdown.xyz уже празднует пэрэмогу.
chabapok: (Default)
Jun. 24th, 2016
09:54 pm
В любом учебнике написано, что в рантайме тип, которым параметризован генерик, не сохраняется. Однако:
ArrayList s = new ArrayList(){};
Type t = s.getClass().getGenericSuperclass();
Type param =((ParameterizedType) t).getActualTypeArguments()[0];
System.out.println(param);
System.out.println(param==String.class);


Дает результат:
class java.lang.String
true

нашел в коде netty.

То есть, если у нас есть class Foo extends Bar<Baz>{}, то Baz все таки сохраняется в рантайме.
chabapok: (Default)
Feb. 27th, 2016
03:40 pm
list.toArray(new T[0]) быстрее чем list.toArray(new T[list.size()])

За счет того, что ненулевой массив jvm обязана сначала заполнить нулями, в то время как при создании нулевого массива его размер известен на момент jitCompilte-time. Поэтому, все оптимайзится, предварительное зануление элеминэйтится.

пруф http://shipilev.net/blog/2016/arrays-wisdom-ancients/

Тесты я запускал с немножко другими настройками, чем предлагаются Шипилевым, но результаты такие же:

Benchmark (size) (type) Mode Cnt Score Error Units
MyBenchmark.simple 0 arraylist thrpt 5 64459,357 ± 718,432 ops/ms
MyBenchmark.sized 0 arraylist thrpt 5 65016,678 ± 522,242 ops/ms
MyBenchmark.zero 0 arraylist thrpt 5 108532,622 ± 396,881 ops/ms

MyBenchmark.simple 1 arraylist thrpt 5 63775,468 ± 324,498 ops/ms
MyBenchmark.sized 1 arraylist thrpt 5 42622,676 ± 310,861 ops/ms
MyBenchmark.zero 1 arraylist thrpt 5 46106,613 ± 3963,317 ops/ms

MyBenchmark.simple 10 arraylist thrpt 5 52268,105 ± 623,953 ops/ms
MyBenchmark.sized 10 arraylist thrpt 5 25022,019 ± 376,163 ops/ms
MyBenchmark.zero 10 arraylist thrpt 5 24973,696 ± 131,005 ops/ms

MyBenchmark.simple 100 arraylist thrpt 5 10826,845 ± 148,878 ops/ms
MyBenchmark.sized 100 arraylist thrpt 5 4272,223 ± 17,979 ops/ms
MyBenchmark.zero 100 arraylist thrpt 5 4838,959 ± 29,761 ops/ms

MyBenchmark.simple 1000 arraylist thrpt 5 1177,184 ± 15,338 ops/ms
MyBenchmark.sized 1000 arraylist thrpt 5 386,003 ± 6,818 ops/ms
MyBenchmark.zero 1000 arraylist thrpt 5 554,154 ± 4,089 ops/ms
----------------------------------
MyBenchmark.simple 0 hashset thrpt 5 55909,493 ± 666,175 ops/ms
MyBenchmark.sized 0 hashset thrpt 5 55745,047 ± 359,206 ops/ms
MyBenchmark.zero 0 hashset thrpt 5 78504,197 ± 561,517 ops/ms

MyBenchmark.simple 1 hashset thrpt 5 27450,713 ± 76,717 ops/ms
MyBenchmark.sized 1 hashset thrpt 5 27011,843 ± 145,992 ops/ms
MyBenchmark.zero 1 hashset thrpt 5 27458,936 ± 115,336 ops/ms

MyBenchmark.simple 10 hashset thrpt 5 10827,750 ± 161,695 ops/ms
MyBenchmark.sized 10 hashset thrpt 5 9359,019 ± 59,018 ops/ms
MyBenchmark.zero 10 hashset thrpt 5 9925,172 ± 55,773 ops/ms

MyBenchmark.simple 100 hashset thrpt 5 1458,237 ± 19,589 ops/ms
MyBenchmark.sized 100 hashset thrpt 5 1166,421 ± 7,313 ops/ms
MyBenchmark.zero 100 hashset thrpt 5 1331,893 ± 23,562 ops/ms

MyBenchmark.simple 1000 hashset thrpt 5 97,926 ± 0,601 ops/ms
MyBenchmark.sized 1000 hashset thrpt 5 90,390 ± 0,851 ops/ms
MyBenchmark.zero 1000 hashset thrpt 5 88,353 ± 0,621 ops/ms

Местами немножко быстрей, местами быстрей в 3 раза.

September 2017

S M T W T F S
     1 2
34567 89
10111213 1415 16
17 18 1920 21 2223
24 25 2627282930

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags