@android_ru

Страница 1030 из 3205
Стас
25.02.2017
17:30:59
А я и думаю, что за Robolectrik такой используется для теста этого клиента на его родном гитхабе...

Sergey
25.02.2017
17:31:56
P.S. я бы не советовал в учебный проект RxJava и Anko

Стас
25.02.2017
17:32:36
P.S. я бы не советовал в учебный проект RxJava и Anko
Есть мысль использовать просто Retrofit + okHTTP + Kotlin

Google
Sergey
25.02.2017
17:33:21
Есть мысль использовать просто Retrofit + okHTTP + Kotlin
я читал котлин-чате ) если человек незнаком с джавой то и котлин ему рано )

Стас
25.02.2017
17:33:57
с джавой знаком, слава Богу 8)

Sergey
25.02.2017
17:34:49
а, так вы из большой джавы в мобайл? )

Стас
25.02.2017
17:35:09
совершенно верно! и хочу вкатиться сразу на котлине туда

и ещё не совсем понял экосистему андроида. Оказалось, что либы должны работать сугубо из рантайма зелёного, а если их тестить, то надо примочки всякие ставить. Верно?

типа Robolectric, Espresso

Стас
25.02.2017
17:38:22
Имеется в виду Test Drive Development как парадигма разработки: нет теста - нет кода

*Driven

Стас
25.02.2017
17:39:07
+

Sergey
25.02.2017
17:39:40
разделяй и властвуй )

Google
Sergey
25.02.2017
17:40:18
и еще для вас станут приятным сюрпризом в будущем некоторые вещи )

Стас
25.02.2017
17:40:47
и еще для вас станут приятным сюрпризом в будущем некоторые вещи )
вот уж не сомневаюсь... тут и вначале всё довольно интригующе

Sergey
25.02.2017
17:40:49
в "мобильном мире" не рекомендованы многие вещи из большой джавы, в виду производительности

for each, enum, hashmap

например

?

чрезмерная аллокация объектов

Стас
25.02.2017
17:42:47
ага, видел перебор стрингов с помощью множества if else, сумничал, что надо бы switch прикрутить, на что получил щелчок по лбу: нет в шестой джаве свитча стрингового

Sergey
25.02.2017
17:42:59
всё что триггерит GC

Стас
25.02.2017
17:43:07
и т.д и т.п

Стас
25.02.2017
17:43:47
свитч по стрингам можно
значит, собеседник сам не в курсе был, хотя позиционировал себя, как преподаватель андроид

Igor
25.02.2017
17:44:31
for each, enum, hashmap
Ну не надо преувеличивать. 2017 год уже - если это не код в onDraw() или игра то обычно это не принципиально.

Igor
25.02.2017
17:45:28
2017? и что
И то - сравни телефоне с 2012. И в Android уже сильно оптимизированиле GC.

Sergey
25.02.2017
17:45:36
ты какой мин апи поддерживаешь?

андроид 4.х еще не вымер

а там далвик и gc недружелюбны к этому

Igor
25.02.2017
17:51:15
ты какой мин апи поддерживаешь?
2.3 и это была игра и там реально пришлось в нескольких местах заменить foreach на for, юзать пулы и тд. Но в обычных приложениях Кнут обычно 100% прав (преждевременная оптимизация...)

Google
Sergey
25.02.2017
17:51:30
думаешь почему появились ArrayMap, семейство SparceArray, Def’ы

The
25.02.2017
17:51:55
Пацаны, кто нибудь рекурсивное дерево парсил с GSON?

Wladižlaw ?
25.02.2017
18:25:47
Как отучиться смотреть документацию по command Q в студии на макбуке?

Quarx2k ?
25.02.2017
18:33:06
не использовать макбук

Kamoliddin
25.02.2017
18:35:07
???

Alexey
25.02.2017
18:39:58
что плохого если я буду использовать только for по индексам?

Alexander
25.02.2017
18:44:37
экономия на спичках )) for по индексу

Alexey
25.02.2017
18:46:32
Sergey
25.02.2017
18:46:40
экономия на спичках )) for по индексу
ты же не руками его пишешь, почему бы и не написать? да и 16мс никто не отменял

Alexey
25.02.2017
18:46:44
Бойлерплейт не привносит особо

Alexander
25.02.2017
18:48:02
что за 16мс ?

Sergey
25.02.2017
18:48:15
как про них незнать

Quantum Harmonizer
25.02.2017
18:49:26
экономия на спичках )) for по индексу
Если всё тормозит, почему бы не оказаться от лишнего итератора, особенно в onDraw или внутри другого цикла? У меня на Kotlin есть экстеншены для такой итерации, никакого синтаксического мусора.

Sergey
25.02.2017
18:49:34
чтобы кадры не выпадали у тебя есть на всю твою логику в ui треде только 16мс на кадр

Quantum Harmonizer
25.02.2017
18:50:09
что за 16мс ?
Время, за которое нужно отрисовывать кадр чтобы выдавать 60 кадров в секунду.

Alexander
25.02.2017
18:51:54
)) я не про onDraw, а про циклы в целом. Использовать for по индексу ради сомнительной экономии это глупо.

Quantum Harmonizer
25.02.2017
18:54:05
)) я не про onDraw, а про циклы в целом. Использовать for по индексу ради сомнительной экономии это глупо.
В целом, если какой-нибудь сервис производит много мусора (итераторов), во время сборки мусора пользователь вполне может это заметить.

Google
Quantum Harmonizer
25.02.2017
18:54:40
Писать это повсеместно — сомнительно, но не сказал бы, что плохо.

Sergey
25.02.2017
18:54:41
просто в ui потоке

https://www.youtube.com/watch?v=MZOf3pOAM6A

=)

Alexander
25.02.2017
18:56:28
в ui потоке не должно быть никаких переборов в цикле ))

Alexander
25.02.2017
18:57:37
? опять этот лысый )) он уже про енумы говорил

Admin
ERROR: S client not available

Igor
25.02.2017
18:57:37
Можешь рассказать про пулы? Какие объекты стоит пулить, какие — нет? Есть best practices?
Ключевое слово слово (3) если все тормозит. Когда у тебя и игра и UI реально обновляется 60 раз в секунду - это важно. Когда у тебя код в onDraw и он тоже теор. может вызывать 60 раз в секунду - это важно. В остальных случая - нужно профилирование. Насчет пулов, это простейшая абстракция - взяли из пула / вернули в пул. Базовый класс https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/Pool.html (реализвываешь newObject или можешь взять ReflectPool)

Quantum Harmonizer
25.02.2017
18:57:55
в ui потоке не должно быть никаких переборов в цикле ))
onMeasure — это перебор. Применить дифф к ресайклеру — перебор.

Alexander
25.02.2017
18:57:58
теперь у всех енумофобия

Sergey
25.02.2017
18:58:33
Alexander
25.02.2017
19:00:39
onMeasure — это перебор. Применить дифф к ресайклеру — перебор.
Вы уже пытаетесь все притянуть за уши, чтобы оправдать использование цикла по индексу. onMeasure и onDraw это особые места где подойдет любая возможность ускорить обработку )). И как часто вы для этих методов пишите логику ?

Igor
25.02.2017
19:02:33
А чем плохо преждевременно оптимизировать?
Тем что в интерпрайз-разработки на первом месте стоит - maintainability (и легкая замена разработчиков). А твой "оптимизированный" код со временем превратится в то что только ты один способен понять.

Quantum Harmonizer
25.02.2017
19:04:10
Чем сложно для понимания циклы по индексам?
Как насчёт трёх вложенных циклов?

Google
Alexey
25.02.2017
19:04:30
Как насчёт трёх вложенных циклов?
Такое бывает редко, это первое

Alexander
25.02.2017
19:04:38
три вложенных цикла это уже говнокод

Alexey
25.02.2017
19:04:40
Обычно в 3д графике

три вложенных цикла это уже говнокод
Вовсе нет, если обработка трехмерного массива точек в комп графике

Nikolai
25.02.2017
19:05:35
а если в функции циклов спрятать. тоже говнокод?

Alexander
25.02.2017
19:05:47
нет

Igor
25.02.2017
19:05:54
Насколько это эффективно? Я, например, пробовал пулить узлы хеш-таблицы, используя AtomicReferenceArray(20) в качестве пула, и это было медленнее, чем new.
Вообще если ты реализуешь в наследнике Pool метод newObject (те без рефлексии) то: Это эффективно, если каждый кадр образуются сотни объектов живущих в течение этого кадра. В остальных случаях это экономия на списках.

Sergey
25.02.2017
19:08:26
> Тем что в интерпрайз-разработки на первом месте стоит андроид это далеко не энтерпрайз

есть еще Optimized for indexed loop )

зачем тогда делают все эти штуки если это спички? )

Alexander
25.02.2017
19:13:43
зачем тогда делают все эти штуки если это спички? )
т е foreach сделали чтобы все страдали ? Ты там что в цикле 10кк объектов в ui потоке перебираешь ? :)

Alexander
25.02.2017
19:14:16
Сколько у тебя там элементов в цикле?

Sergey
25.02.2017
19:14:26
просто говорю о наличии таких штук

Сколько у тебя там элементов в цикле?
не итерирую коллекции по юай

Alexander
25.02.2017
19:15:57
а все же сколько элементов в среднем у тебя в цикле ?

10,? 100? 10000000?

Sergey
25.02.2017
19:16:22
а все же сколько элементов в среднем у тебя в цикле ?
по разному, несколько десятков или сотен

Alexander
25.02.2017
19:17:25
я думаю на 1000 элементов ты разницы не заметишь

даже на 10к не заметишь

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