@kotlin_lang

Страница 918 из 982
Nameless
05.10.2018
12:47:26
https://medium.com/@programmerr47/to-index-or-iterate-7b81039e5484 еще про андроид

в jmh получается одинаково indexed\iterator, мб что то не так делаю офк, ну сорян

Bogdan
05.10.2018
12:48:24
Не в тему вопрос: а какая мотивация была выпилить из котлина статик?
Полного ответа не знаю, но статики это процедурщина, и вместо ооп мы возвращаемся к процелурам, тот же апач комонс

Google
Nameless
05.10.2018
12:50:35
# Run complete. Total time: 00:01:43 Benchmark (iterations) Mode Cnt Score Error Units BenchMark.indexed 20 thrpt 20 983.198 ± 52.642 ops/s BenchMark.iterator 20 thrpt 20 921.769 ± 18.794 ops/s



я так то парень с андроида, не в тот чат зашел

Quantum Harmonizer
05.10.2018
12:51:28
Nameless
05.10.2018
12:52:04
у большой джавы жит то получше соображает

Не в тему вопрос: а какая мотивация была выпилить из котлина статик?
статик из джавы разлетелся в как минимум две стороны - в компаньон обжекты и в переменные\функции на уровне файла

Nameless
05.10.2018
12:58:46
гуд

Однородность языка. Статики же WTF немного.
wtf немного это объявление static переменных внутри метода, а в джаве то норм)

OlegKrikun
05.10.2018
13:00:38
Чот трасляция походу подсдохла

OlegKrikun
05.10.2018
13:01:33
Google
Nameless
05.10.2018
13:03:20
конечно не как замена стрим апи на циклы, но все же

Руслан
05.10.2018
13:03:39
почему перестать если прирост может дать существенный?
В том то и дело что не может. Или у тебя на андроиде бигдата считается?

Nameless
05.10.2018
13:04:22
В том то и дело что не может. Или у тебя на андроиде бигдата считается?
обычная дата становится бигдатой для бюджетных девайсов

OlegKrikun
05.10.2018
13:04:48
Это только у меня?
а всё, зашовелилось

OlegKrikun
05.10.2018
13:06:05
обычная дата становится бигдатой для бюджетных девайсов
Ну щаз бюджетные девайсы, разве что имею траблы с дисковым IO, а остальное обычно быстро

Bogdan
05.10.2018
13:07:59
Nameless
05.10.2018
13:08:11
ну кстати не так уж и плохо, имеют более узкий скоуп, а это хорошо

Bogdan
05.10.2018
13:10:57
Quantum Harmonizer
05.10.2018
13:11:13
Android не имеет ничего общего с jvm же ?
так я вроде именно на это и намекаю

OlegKrikun
05.10.2018
13:12:04
Ну раз тут и так где-то об этом: енумы то юзаете в андроеде? =)

Quantum Harmonizer
05.10.2018
13:12:43
OlegKrikun
05.10.2018
13:13:25
Конечно. Они же офигительны.
и в адаптере как вью тайп? =)

Bogdan
05.10.2018
13:13:30
Quantum Harmonizer
05.10.2018
13:13:40
Nameless
05.10.2018
13:13:49
Google
Quantum Harmonizer
05.10.2018
13:13:56
полиморфный парсинг, например

OlegKrikun
05.10.2018
13:14:27
да классно
в адаптере красиво, но вот там как раз лучше инты =)

Vladimir
05.10.2018
13:15:39
Nameless
05.10.2018
13:16:35
Quantum Harmonizer
05.10.2018
13:17:19
Надо дождаться inline enum class
И как там реализовать полиморфизм?

Vladimir
05.10.2018
13:19:33
И как там реализовать полиморфизм?
Хз. Ну а вообще я бы не стал разменивать базовые возможности языка (foreach, enum) на микрооптимизации.

Quantum Harmonizer
05.10.2018
13:20:29
Хз. Ну а вообще я бы не стал разменивать базовые возможности языка (foreach, enum) на микрооптимизации.
Правда в том, что enum нельзя втупую заменить IntDef'ом. Это другой инструмент. В вырожденных случаях, когда это сделать просто, ProGuard это делает.

OlegKrikun
05.10.2018
13:21:26
но черт побери, удобно жеж
Да, но уж больно часто придётся создавать енум из инта

Nameless
05.10.2018
13:21:40
только искать только

OlegKrikun
05.10.2018
13:22:17
только искать только
Мапа с енумами? ?

Nameless
05.10.2018
13:22:18
как viewtype передаешь ordinal и поиск быстрый

Quantum Harmonizer
05.10.2018
13:24:37
Nameless
05.10.2018
13:26:09
OlegKrikun
05.10.2018
13:26:56
А обратно как? ValueOf?

Andrey
05.10.2018
13:26:58
Блин. Любители микрооптимизаций в красной зоне потери читабельности кода. Вы вообще прикидывали, на каких объёмах данных ваши микрооптимизации начинают хоть какую-то роль играть? Если надо много и быстро считать (Big Data), то там через массовый параллелизм производительность добирается, а не через Int VS enum и прочие микрохаки.

Nameless
05.10.2018
13:27:41
Руслан
05.10.2018
13:27:58
@kotlin_mobile

Google
Quantum Harmonizer
05.10.2018
13:28:54
values() выделяет новый массив ;)

Nameless
05.10.2018
13:29:36
values() выделяет новый массив ;)
ну создай его один раз

OlegKrikun
05.10.2018
13:32:28
ну создай его один раз
И уже сразу не так красиво

Quantum Harmonizer
05.10.2018
13:32:43
И уже сразу не так красиво
не, можно норм сделать

OlegKrikun
05.10.2018
13:33:09
Nameless
05.10.2018
13:33:24
values() выделяет новый массив ;)
инфа проверенная кстати?

Quantum Harmonizer
05.10.2018
13:33:29
enum class Whatever { A, B, C; companion object { private val vals = values() operator fun get(ordinal: Int) = vals[ordinal] } }

Admin
ERROR: S client not available

Quantum Harmonizer
05.10.2018
13:33:33
Nameless
05.10.2018
13:34:36
146%, там $VALUES.clone()
ок, спасибо не знал

Andrey
05.10.2018
13:35:27
да в ui всегда играет
Насчёт всегда играет - точно бред. Никакой фактор ни в какой области не является абсолютно решающим. На сколько процентов использование Int вместо enum ускоряет отклик вашего UI приложения? Насколько существенно для пользователя это ускорение отклика? Насколько горячий код с Int вместо enum в вашем UI приложении? Без ответов на эти вопросы нет смысла говорить, что от оптимизации есть хоть какая-то польза, кроме вреда.

Quantum Harmonizer
05.10.2018
13:36:59
Тут есть один нюанс: любое приложение всегда стартует слишком долго. Поэтому выпиливать лишние классы бывает полезно.

Andrey
05.10.2018
13:40:55
Ну может играть - очевидно, может. Как и в Big Data, и в High Load и в любой другой области. Я категорически против подхода: "оптимизируем всё и везде на скорость по максимуму". Надо идти по приоритетам: 1. Код должен быть корректным. 2. Если код корректный, но не укладывается в требования по производительности - выявляем узкие места и оптимизируем их.

Quantum Harmonizer
05.10.2018
13:41:36
Ну это всё более-менее очевидно, да.

Nameless
05.10.2018
13:42:18
но после пары\тройки\десятка таких итераций человек сразу может начать писать страшный оптимизированный код в каких-то рамках

Google
Andrey
05.10.2018
13:42:31
Тут есть один нюанс: любое приложение всегда стартует слишком долго. Поэтому выпиливать лишние классы бывает полезно.
Оптимизация старта и оптимизация времени отклика - это вообще разные задачи. При этом зачастую противоречивые. Можно динамически подгружать приложение, при этом стартовать оно будет быстро, а вот отклик может пострадать.

Nameless
05.10.2018
13:42:39
и ему норм будет

Andrey
05.10.2018
13:46:55
но после пары\тройки\десятка таких итераций человек сразу может начать писать страшный оптимизированный код в каких-то рамках
Только пишет он его очень близко к пределу сложности, которой может управлять. Если он при этом ещё и семи пядий во лбу, то те, кто с ним в команде, запросто перестанут понимать этот код и такой код уже можно считать неуправляемым с точки зрения команды. Человек заболел/в отпуске/уволился/умер и всё, что он писал можно только использовать как есть и переписывать по мере возможности, так как разобраться в этом кроме него никто не может.

Andrey
05.10.2018
13:49:27
Это какой-то совсем вырожденный случай, оптимальный код — не обязательно говнокод.
Оптимизация почти всегда усложняет код. Исключение - ошибки в исходной имплементации, которые привели к усложнению и просадке производительности одновременно.

Вот заведу я особый случай HashSet для Long, и будет у него интерфейс как у Set — кому это мешает?
Ну наличие двух сущностей уже сложнее, чем одна. Либо специализированный HashSet не будет использоваться, либо каждый раз при использовании придётся принимать на одно решение больше. Каждое такое решение - потенциальная ошибка.

ну разобраться можно всегда, и еще сложный вопрос выгодно ли такой подход сотруднику\работодателю
Ага. То-то все в квантовой физике разбираются, топологии, цифровой схемотехнике и прочих научных/инженерных дисциплинах. Разобраться - это всегда время, усилия, мотивация и мозги, зачастую большие. Если чего-то из этого не хватит - разобраться нельзя.

ну разобраться можно всегда, и еще сложный вопрос выгодно ли такой подход сотруднику\работодателю
Вы же учились в ВУЗе. Должны помнить, как скрипели и плавились мозги, притом на базовых понятиях. Да и из программирования: половина, если не больше пытающихся изучить чистое типизированное ФП умирает на таких базовых понятиях теории категорий, как функтор и монада.

Andrey
05.10.2018
14:02:36
не все =)
В смысле не все учились в ВУЗе?

Nameless
05.10.2018
14:03:59
От немного до много

Quantum Harmonizer
05.10.2018
14:04:09
?

Andrey
05.10.2018
14:04:18
Alexander
05.10.2018
14:06:30
Оптимизация ради оптимизации это почти всегда плохо. Почти любая оптимизация - это специализация. А специализация - это ограничения.

OlegKrikun
05.10.2018
14:09:35
Андрей, вернёмся к тому с чего я тут за енумы начал, вот есть сущьность которая на основе данных генерирует вьшки для отображения в списке, каждый итем списка имеет тип представленый интом, вьюшки созданные попадают в пул и реюзаются, при быстрой прокрутке метод биндинга данных к вью вызывается очень часто. Вот и спрашивается использовать ли енум в такой ситуации для представления типа вьюшки при условии что проход gc вызовет "заикание" при прокрутке списка =) при этом оптимизацией (в сторону читаемости удобности написания) тут выглядит использование енума, по умолчанию все делают набор инт констант

Страница 918 из 982