
guga
10.04.2018
17:50:51

Luger
10.04.2018
17:50:52

Pavel ?
10.04.2018
17:51:15

Alex
10.04.2018
17:51:52

Google

Luger
10.04.2018
17:51:59
есть же kts
ну он там мало чем отличается, по большому счету.
да и я бы не стал переписывать все билдскрипты на kt ради kt.

Pavel ?
10.04.2018
17:52:36

guga
10.04.2018
17:53:35

Митко Соловец?
10.04.2018
17:54:31
Например, я

Artjom
10.04.2018
17:54:51
Еще спок есть

guga
10.04.2018
17:55:06
Еще спок есть
вот это да, но я его только в петпроекты втянуть мог

Alex
10.04.2018
17:55:20

guga
10.04.2018
17:55:22
а так есть кукмбер

Artjom
10.04.2018
17:55:32
А я в продакшен смог

Pavel ?
10.04.2018
17:55:35
а для спринга контекст описывать

Google

Pavel ?
10.04.2018
17:55:40
на грувях
но помойму и там уже побывал котлин

guga
10.04.2018
17:56:06

Pavel ?
10.04.2018
17:58:35
не видел
еще как есть, в 5ом, контекст на kotlin dsl

Mr
10.04.2018
17:58:43
hi
Why string strings are immutable

Igor
10.04.2018
18:01:12
```
UNSAFE_ENTRY(void, Unsafe_SetOrderedLong(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jlong x))
UnsafeWrapper("Unsafe_SetOrderedLong");
#if defined(SPARC) || defined(X86)
// Sparc and X86 have atomic jlong (8 bytes) instructions
SET_FIELD_VOLATILE(obj, offset, jlong, x);
#else
// Keep old code for platforms which may not have atomic long (8 bytes) instructions
{
if (VM_Version::supports_cx8()) {
SET_FIELD_VOLATILE(obj, offset, jlong, x);
}
else {
Handle p (THREAD, JNIHandles::resolve(obj));
jlong* addr = (jlong*)(index_oop_from_field_offset_long(p(), offset));
ObjectLocker ol(p, THREAD);
*addr = x;
}
}
#endif
UNSAFE_END
```
Чтобы не быть голосовым, выше подтверждение
И еще туда же: http://dev.cheremin.info/2011/10/atomicxxxlazyset.html

Sergei
10.04.2018
18:47:31

Ivan
10.04.2018
18:52:50
это как в пословице про припарку?


Sergei
10.04.2018
18:56:12
не, это как в мире который доверяет Apache Foundation (куда можно в любой момент денег занести) гораздо больше чем Pivotal. Такой мир ещё Enterprise Software называется =) Повалили как на горячие пирожки =)
тут одно время OCI че то притихли, я аж прям начал думать на тёмную сторону их переманили (ну, там, кококотлин например), ан нет, оказывается в тайне свой http://micronaut.io пилили. Идея compile time фреймворка давно уже в воздухе витает, вот походу у них получилось. А зная compile time фичи Groovy (включая ту, за которую меня в проект взяли) - это может быть очень быстро и легковесно.
Я на всякий случай напомню правило "чем более динамичен язык тем больше вещей делается в compile time", как бы на первый взгляд это не звучало противоречиво
В Groovy можно делать всякие дикие штуки типа compile time JSON views. Например вот это я наваял на коленке (в прямом смысле слова, с ноутбуком на коленях) пока слушал Graeme по поводу нового Grails год назад на Greach conf:
https://github.com/bsideup/macro-methods-workshop/blob/8119bace0775fce74c2a0f51ac42f2666cf8baaf/src/test/groovy/com/example/MacroJSONTest.groovy#L27
здесь "macroJSON" после компиляции заменится на конкатенацию строк. Фактически самый быстрый JSON генератор для JVM =)
в Java можно делать Dagger-ы всякие, но упираешься в ограничения annotation processing-а джавы. В Groovy compile time фичей ну просто на порядки больше, представьте сколько всего можно сделать при желании?
не смотря на то, что Groovy - самый "взрослый" альтернативный JVM язык, у него ещё многое впереди и некоторые его возможности начали по-настоящему раскрывать только недавно. Micronaut - лишь малый пример того, что можно сделать "не напрягаясь"


Quantum Harmonizer
10.04.2018
19:14:34

Mikhail
10.04.2018
19:17:38

Sergei
10.04.2018
19:18:07

Google

guga
10.04.2018
19:18:07

Mikhail
10.04.2018
19:19:15

Sergei
10.04.2018
19:20:01
Где можно бенчмарки посмотреть?
там реально на выходе будет код вида:
var fooString = ...
var myInteger = ...
String result = "{\"foo\":\"" + escape(fooString) + "\", \"bar\":" + myInteger + "}"

Mikhail
10.04.2018
19:20:03

Sergei
10.04.2018
19:20:36
можно и без них, любой самый быстрый способ в JVM вернуть строку из нескольких строк

Mikhail
10.04.2018
19:20:37

Sergei
10.04.2018
19:22:19
Ну так это не так быстро как могло бы быть
я говорю о том, что любой, самый крутой runtime json генератор, проиграет, т.к. он будет байткод собирать в рантайме (даже если он генерирует байткод как оптимизацию), в то время как Groovy этот байткод в compile time подставит
тут уже выигрышь будет только на стадии инициализации, понятное дело
но поинт был именно в compile time подходе

Mikhail
10.04.2018
19:25:54

Sergei
10.04.2018
19:27:38
девушку тебе надо......

Mikhail
10.04.2018
19:29:17
У меня есть

Sergei
10.04.2018
19:29:32
Приду домой - буду бенчмаркать)
я надеюсь ты не пойдёшь код по той ссылке бенчмаркать, там всё же PoC (вот в Grails по-моему они уже сделали нормальный), так что советую за материалом на benchhub пойти вместо этого )

Mikhail
10.04.2018
19:29:51
А ещё у меня есть свой стринг-билдер, который быстрее дефолтного

Quantum Harmonizer
10.04.2018
19:31:06

Sergei
10.04.2018
19:31:17
вот значит его можно заинлайнить на стадии compile time и превратить в чистый байткод, сэкономив пару method call-ов :)
а значит - быстрей :troll:

sherzod
10.04.2018
19:31:45
а что исходники, наверное аллоцирует 4Г памяти сразу

Quantum Harmonizer
10.04.2018
19:32:21
btw, дефолтный код для str1 + str2 + str3 будет new SB().append(str1)(...).toString(), а можно было бы new SB(str1.length() + ...)(...).

Mikhail
10.04.2018
19:32:32
можно исходники?)
https://github.com/wizzardo/tools/blob/master/modules/tools-misc/src/main/java/com/wizzardo/tools/misc/ExceptionDrivenStringBuilder.java

Google

Митко Соловец?
10.04.2018
19:32:44
опять Миша пиарит свои велосипеды

Mikhail
10.04.2018
19:32:53
Оно быстрее, если кешировать билдер

Quantum Harmonizer
10.04.2018
19:33:51

Mikhail
10.04.2018
19:34:56

Quantum Harmonizer
10.04.2018
19:35:15

Mikhail
10.04.2018
19:35:50
Честно, не помню какой у него апи, но в принципе можно добавить
Я тут кстати почти оформил бенчмарки для https://www.techempower.com/benchmarks/ много времени ушло на оптимизацию пайплайнинга

Vladimir
10.04.2018
19:47:02
Можно ли java-приложение опубликовать в Apple App Store? Поиск в интернете показал, что в 2014 году это было возможно. Как сейчас обстоят дела?

Pavel ?
10.04.2018
19:55:28
в райнтаймеж тоже самое можно сделать, а на выходе в asme будет всеравно все одно и тоже
или я чего-то не понял


Korolyov
10.04.2018
20:02:41
Привет! Более опытные товарищи, подскажите пожалуйста, пытаюсь профилировать долгое выполнение метода.
Запустил профилирование на 15 секунд, сделал запрос, который выполнялся 13 секунд, получил вот такой профиль.
На нём три зоны, средняя и самая маленькая собственно интересующий метод, про две других зоны только догадки.
Кто то может подсказать, что они символизируют? Возможно, что то не показывается в профиле, что?

Vlad
10.04.2018
20:11:58
Бд есть?

Korolyov
10.04.2018
20:12:35
угу
запрос в базу там внутри

Vlad
10.04.2018
20:13:01
Если есть кривая работа с бд/ медленный запрос
Это я вангую
Jdbc?

Google

Korolyov
10.04.2018
20:13:26
да-да

Vlad
10.04.2018
20:13:46
Проставь fetch size
План запроса посмотри

Korolyov
10.04.2018
20:14:22
запрос в базе руками выполняется мгновенно
даже если чередовать запросы программные и руками ( как будто бы не кеш базы)

Vlad
10.04.2018
20:15:11
Значит fetch size поможет
Мб пул соединений закончился

Korolyov
10.04.2018
20:15:25

Vlad
10.04.2018
20:15:34
Хз)
Мб вообще не база

Korolyov
10.04.2018
20:15:56
во во

Vlad
10.04.2018
20:16:03
Я бы начал с базы

Korolyov
10.04.2018
20:16:36
остальные методы не тормозят, тормозит только этот определённый - как будто бы не коннекшны

Vlad
10.04.2018
20:17:37
У тебя на этой картинке точно нужный тред?

Ivan
10.04.2018
20:17:39
это постоянно воспроизводится или под нагрузкой только?

Korolyov
10.04.2018
20:17:49

Ivan
10.04.2018
20:17:54
продебаж