@android_ru

Страница 441 из 3205
Andre
21.10.2016
00:35:07
всем по офферу

Eugene
21.10.2016
00:35:14
Кстати, судя по упоминанию трейтов кто-то тут знаком со скалой? :)

Vitaliy
21.10.2016
00:35:14
Это же с дивана вставать надо ещё

Andre
21.10.2016
00:35:17
@bvitaliyg оффер

Google
Vitaliy
21.10.2016
00:35:29
Ну тут да, много кто

Andre
21.10.2016
00:35:31
Dmitriy оффер

и мне оффер всем по офферу

Vitaliy
21.10.2016
00:35:42
Я на ней не писал, просто встречал трейты как сущности в ООП

Eugene
21.10.2016
00:35:52
@andremacareno Мы поняли, можешь не продолжать :)

Andre
21.10.2016
00:36:10
я и не собирался :D

Eugene
21.10.2016
00:37:51
Интересно было бы пообщаться с кем-нибудь, кто запилил в продакшен что-нибудь на Scala под андроид)

Vitaliy
21.10.2016
00:38:31
Вроде бы в году так 2013-м ею многие увлекались

И писали, особенно на аутсорсе

Даже в глубинках, в Ростове точно

Eugene
21.10.2016
00:38:59
Просто интересно, а стоит ли оно вообще того?)

Dmitriy
21.10.2016
00:39:14
https://youtu.be/MYaoSELIC_U

Andre
21.10.2016
00:39:14
оно ж всё в один байткод компилируется

Google
Andre
21.10.2016
00:39:26
но зато там есть из коробки акторы

Eugene
21.10.2016
00:39:28
Да это-то понятно)

Vitaliy
21.10.2016
00:39:40
Множество команд одно и то же, а сами команды разные

Andre
21.10.2016
00:39:54
мозг сломался на этой фразе

Vitaliy
21.10.2016
00:40:00
Обычно все жаловались на то, что из-за скалы и её stdlib сразу количество методов зашкаливает

мозг сломался на этой фразе
В Котлине есть nullable types. fun test(a: A) { System.out.println(a); } Как ты думаешь, какой код сгенерирует Котлин?

Vitaliy
21.10.2016
00:41:40
Он сгенерирует примерно такое: void test(A a) { Utils.checkNotNull(a, "a"); System.out.println(a); }

Ага

Причем, Котлин ещё относительно быстрый язык

Eugene
21.10.2016
00:42:03
Я думаю, речь шла о том, что все скомпилится в 100% JVM-совместимый байткод

Vitaliy
21.10.2016
00:42:14
Там даже инлайн лямбд из соображений производительности сделали

Eugene
21.10.2016
00:42:35
Собственно, на jpoint слушал доклад чувака из jetbrains, где он подробно все разжевал

Как тот или иной синтаксический сахар котлина выглядит при декомпиляции обратно в java-код

Andre
21.10.2016
00:43:03
и типа смысл получается такой же, как и от библиотек - стало удобнее, но добавился оверхед?

Eugene
21.10.2016
00:43:17
Он там бенчмарки показывал, по итогу - да

Стало намного удобнее, но есть оверхед

В подавляющем большинстве случаем весьма незначительный

Google
Vitaliy
21.10.2016
00:43:42
Именно так

Причем у них, повторюсь, не сильно большой ешё оверхэд

Andre
21.10.2016
00:43:56
ну, процессоры нынче такие, что его никто не заметит, скорее всего

Vitaliy
21.10.2016
00:44:02
Лол

Заметит

Eugene
21.10.2016
00:44:12
И да, инлайн лямбд - по-моему это единственная фича, из-за которой котлин может выиграть у джавы

Vitaliy
21.10.2016
00:44:24
Попадет такой код в onDraw() — и будет тебе веселье

Eugene
21.10.2016
00:44:33
Во всех остальных бенчмарках было либо полное равенство, либо небольшая просадка у котлина)

Vitaliy
21.10.2016
00:44:38
Другого я пока не видел

Andre
21.10.2016
00:44:41
Попадет такой код в onDraw() — и будет тебе веселье
если там объекты не порождаются, то не будет, не?

Vitaliy
21.10.2016
00:45:10
А ты так часто думаешь, что они не порождаются? drawableList.forEach { it.draw(c) }

Eugene
21.10.2016
00:45:19
А учитывая, что Scala дает намного больше возможностей, чем котлин, мне вдвойне интересно как ее код распепячивается обратно в джаву))

Andre
21.10.2016
00:45:31
я просто котлин/скалу/кложур/етц не смотрел :)

Eugene
21.10.2016
00:46:05
А так, конечно, на скале писать в андроиде - это от лукавого

Пусть лучше котлин развивают)

Andre
21.10.2016
00:46:55
я вот хочу научиться по максимуму в натив запихивать

Vitaliy
21.10.2016
00:47:06
Зря хочешь

Нативный вызов это тоже оверхэд

Нельзя их по каждому чиху делать

Google
Eugene
21.10.2016
00:47:45
А это из технических соображений, или из соображений т.н. job security? :)

Andre
21.10.2016
00:48:40
спортивный интерес

Eugene
21.10.2016
00:48:57
Понятно)

Vitaliy
21.10.2016
00:49:00
Вообще, по поводу натива

Andre
21.10.2016
00:49:09
ну раз уж речь об оверхеде пошла: да, это я понимаю - ну так давайте смотреть, в каких ситуациях он плох

Vitaliy
21.10.2016
00:49:22
Я недавно ради интереса взял один из самых быстрых нативных парсеров и написал к нему обертку в jni

Andre
21.10.2016
00:49:33
я уж не говорю о том, что часть вещей в Android SDK и JDK сами их используют

Vitaliy
21.10.2016
00:49:36
Интерфейсно такую же, как в org.json

Разница в 8-9 раз

Andre
21.10.2016
00:50:37
если мы работаем в нативе, у нас же еще GC спит, так ведь?

Admin
ERROR: S client not available

Vitaliy
21.10.2016
00:50:50
+ оно не держит все древо в куче

Но в самом нативе его нет, да

Andre
21.10.2016
00:51:23
в любом случае, объектов собирать-то меньше

Vitaliy
21.10.2016
00:51:55
Ага

Eugene
21.10.2016
00:53:30
Вообще, кстати, приходилось слышать, что иногда джавовский код ухитряется работать быстрее нативного за счет JIT

Andre
21.10.2016
00:53:37
В таком случае, получается, что в натив имеет смысл выносить то, что: 1) будет использоваться где-то ещё (то есть с целью кроссплатформенности) 2) порождает в яве миллион объектов при своей работе, хотя нужен, допустим, всего один какой-то еще варианты есть?

Eugene
21.10.2016
00:54:36
Может, если нужно кэшировать что-нибудь тяжелое за пределами JVM-heap

Vitaliy
21.10.2016
00:54:56
1) с кросслпатформенностью у натива, наоборот, все хуже. 2) да, но это частный случай.

Google
Andre
21.10.2016
00:54:57
а, ну и еще забыл третий пример, навеянный кодом телеграма когда нужно бэкпортировать иммутабельные битмапы или какие-то кодеки на старые версии андроида

Vitaliy
21.10.2016
00:55:15
Главный смысл — делать тяжелую работу, которую нельзя делать в джаве

Например, кодеки

Eugene
21.10.2016
00:55:21
Помнится, какая-то из попсовых либ для работы с картинками (fresco, кажется) такими делами грешила

Vitaliy
21.10.2016
00:55:24
Или сильное шифрование

Никаких GC_FOR_ALLOC на 4.X

Andre
21.10.2016
00:56:10
1) с кросслпатформенностью у натива, наоборот, все хуже. 2) да, но это частный случай.
я имею в виду ситуации, когда кусок приложения будет еще переиспользован на другой ОС

Vitaliy
21.10.2016
00:56:26
Типа айоса?

Andre
21.10.2016
00:56:29
например

Vitaliy
21.10.2016
00:56:45
Тогда да, но обертку для jni все равно будешь сам писать

Andre
21.10.2016
00:57:02
ну это понятно, надо же как-то в интерфейс прокидывать всё равно

Eugene
21.10.2016
00:57:33
Немного оффтоп, но помню однажды видел в одном iOS-проекте часть кода, для работы с крипто про

Это адище работало на голых сях и вызывало методы WinAPI

Уж не знаю как, но извращенцы из криптопро протащили винапишные либы на iOS

К слову о кросплатформенности :)

Andre
21.10.2016
01:00:04
забавный пример :) я, конечно, не то имел в виду - просто, допустим, пишешь с stdlib и какими-то еще кроссплатформенными библиотеками, и приложение на какой-то десктопной ОС напрямую с этим работает, для андроида еще дописываешь враппер - и готово

Никаких GC_FOR_ALLOC на 4.X
вот, кстати, по этому поводу уточню, раз уж упомянули речь ведь идет о переиспользовании Bitmap'ов за счет киткатовских библиотек?

Eugene
21.10.2016
01:02:29
Я вот об этом говорил http://frescolib.org/docs/caching.html

Первый пункт. Они до 5-ого андроида битмапки кэшировали во внешней куче

Andre
21.10.2016
01:17:00
к знатокам Camera API, пока что легаси: есть переключение между фото и видео, если я правильно понимаю, за это время должно произойти следующее: 1) останавливаем превью 2) пересчитываем размеры превью 3) снова показываем превью так вот: всё убрано в фоновые потоки, но всё равно есть заметный пролаг в 200 мс, есть мысли, как его убрать?

Gregory
21.10.2016
01:18:30
важно open вызывать с фонового потока, и не просто фонового, а с хэндлером, насколько помню

у меня конкурсное вроде не лагало

Страница 441 из 3205