@kotlin_lang

Страница 921 из 982
Алексей
05.10.2018
17:59:44
Я просто пытался в свое время это понять, но поскольку на практике встречаться не приходилось, а объяснять некому - так и не разобрался, хотя в голове и отложилось немного об этом

Alexander
05.10.2018
18:00:15
Ну я вот постоянно использую, но до сих пор не понимаю

В смысле если сажусь и разбираю конкретный пример, то все понятно, но интуитивного понимания нет

Anna
05.10.2018
18:00:42
Я несколько раз попробовала объяснить и стало понятнее ?‍♀️ но всё равно залипаю каждый раз и в уме начинаю "вычислять" где кто

Google
Алексей
05.10.2018
18:01:04
Сложненько

Интересненько

В джавке с этим проще было

Alexander
05.10.2018
18:01:26
Не, там наоборот, еще хуже

Проблема возникает, когда пытаешься делать как в джаве

Igor
05.10.2018
18:01:45
В джавке с этим проще было
Посмотри сигнатуры внутри библиотеки стримов

Алексей
05.10.2018
18:01:46
Не, там наоборот, еще хуже
с точки зрения понимания - проще

Alexander
05.10.2018
18:04:02
Это если declaration site variance

Bogdan
05.10.2018
18:04:19
out - использовать в методе, o in отдавать во вне

Google
Alexander
05.10.2018
18:05:13
В общем, у меня с этими in и out до сих пор как с артиклями, все время путаюсь, где что и нужно ли оно вообще

Алексей
05.10.2018
18:05:22
Bogdan
05.10.2018
18:05:24
Это если declaration site variance
можнобез анг ? В дажве, если я правильно помю, масивы инварянтны, а колекции нет

Alexander
05.10.2018
18:05:35
да

Igor
05.10.2018
18:06:58
можнобез анг ? В дажве, если я правильно помю, масивы инварянтны, а колекции нет
В джаве массивы коварианты (это вызывает проблеммы), а коллекции инвариантны

Bogdan
05.10.2018
18:07:05
Наоборот же?
хмм, я их опять мог попутать, сейчас посмотрю

Алексей
05.10.2018
18:07:29
хмм, я их опять мог попутать, сейчас посмотрю
Ну дока говорит, что наоборот - in работает для получаемых типов

Igor
05.10.2018
18:08:31
В Dart все дженерики ковариантны (что по идеи должно вызывать проблемм еще больше, чем с масивами в джаве) (так к слову)

Bogdan
05.10.2018
18:08:34
В джаве массивы коварианты (это вызывает проблеммы), а коллекции инвариантны
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82 это масивы

Alexander
05.10.2018
18:08:54
У меня ковариантые и контравариантные бывают тензоры в теории гравитации, массивы в эту ячейку памяти уже не лезут

Anna
05.10.2018
18:09:33
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82 это масивы
по ссылке слишком общий термин. и к нашему случаю там ничего не относится

Alexander
05.10.2018
18:10:02
https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B8_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

Алексей
05.10.2018
18:10:14
хорошо я поищу доклад
Упомяните меня, как найдете, или в личку

Alexander
05.10.2018
18:10:16
для тех, кто без анг...

Алексей
05.10.2018
18:10:30
Надо разобраться бы с этим:)

Google
Anna
05.10.2018
18:11:11
И кстати, в "котлин в действии" тоже по-русски разжёвано ?‍♀️

Алексей
05.10.2018
18:24:30
Кажется, разобрался. in T - гарантия возможности использования наследников типа применительно к входящему контейнеру для записи в него out T - гарантия возможности применения (приведения к) более общего типа относительно входного типа T

Верно?

Руслан
05.10.2018
18:51:58
Как то недавно здесь спрашивал, как люди справляются с миграциями пользуясь Exposed. Посоветовали использовать дополнительный инструмент управления миграциями, например FlyWay. Подключил себе FlyWay, но обнаружил что в бесплатную версию не входят откаты миграций. Кажется, что это очень важная вещь, потому что я уже сталкивался с ситуациями, когда, например, допустил ошибку в скрипте и миграция выполнилась только на половину, в таблицу версий записались изменения и откатывать изменения приходится руками. Да и вообще возможность откатить миграцию выглядит востребованной. Какую альтернативу FlyWay вы используете? Или все пользуются комерческой версией это либы?
У тебя даже в флайвей либо накатывается файл миграции, либо нет. Поэтому проблем не будет с этим. Откат в флайвей именно работает для целых файлов миграции, а не для поломанных скриптов. Для поломанных скриптов есть транзакции внутри.

Alexandr
05.10.2018
19:08:49
Что было? 350+ сообщений не почитаю(

Quantum Harmonizer
05.10.2018
19:11:02
Не, разные, поговори еще раз
А, рили, не туда смотрел.

Оно и понятно.

Nameless
05.10.2018
19:15:30
Что было? 350+ сообщений не почитаю(
в андроиде indexed быстрее, в большой jvm время одинаковое т.к. jit лучше справляется

Руслан
05.10.2018
19:16:08
Но в постгресе точно есть
Да и в Марии должен быть. Оракл и мссивэквел в платной поставке anyway. Тут скорее вопрос что зачем использовать такие базы где этого нет, и как вы вообще с такой базой живёте

Quantum Harmonizer
05.10.2018
19:16:38
Nameless
05.10.2018
19:16:49
я занимаюсь андроидом, про большую jvm вышла ложь, про андроид правда, вот и не надо было глотку надрывать орами

Оно должно таки немного различаться
ну там за столько итераций наверное в одинаковый машинный прооптимизировало

Google
Quantum Harmonizer
05.10.2018
19:19:00
ну там за столько итераций наверное в одинаковый машинный прооптимизировало
Нет. JVM не может убрать итератор. Только создать на стеке.

Bogdan
05.10.2018
19:21:06
я занимаюсь андроидом, про большую jvm вышла ложь, про андроид правда, вот и не надо было глотку надрывать орами
так я сразу сказал что андроид это не JVM, она не гарантирует ее спецификаций

Nameless
05.10.2018
19:21:26
Нет. JVM не может убрать итератор. Только создать на стеке.
хз, не эксперт, но производительность одинаковая получилась

Nameless
05.10.2018
19:21:45
так я сразу сказал что андроид это не JVM, она не гарантирует ее спецификаций
а что в спефикации что то есть про arraylist + indexed\iterator loop?

Где?
# Run complete. Total time: 00:00:48 Benchmark (iterations) Mode Cnt Score Error Units BenchMark.indexed 1 thrpt 10 986.116 ± 27.244 ops/s BenchMark.iterator 1 thrpt 10 966.844 ± 78.411 ops/s

Bogdan
05.10.2018
19:22:31
ну там за столько итераций наверное в одинаковый машинный прооптимизировало
вызов метода, вот компилятор пытается от него избавится, если ты посмотришь в форИчь то там обычный цыкл, и если он инлайнится, т произодительность -+ ==

Nameless
05.10.2018
19:22:33
Admin
ERROR: S client not available

Bogdan
05.10.2018
19:23:13
а что в спефикации что то есть про arraylist + indexed\iterator loop?
нет, но если нет гарантий по спецификациям, то и про jvm оптимизации забываем

Nameless
05.10.2018
19:23:38
Quantum Harmonizer
05.10.2018
19:23:41
Лучше бы сунуть сумму в чёрную дыру

Quantum Harmonizer
05.10.2018
19:24:24
Nameless
05.10.2018
19:25:15
о прикольно, ща

Quantum Harmonizer
05.10.2018
19:26:18
Интересно было бы разобрать почему
да потому что объект не создаётся

не факт, что андроид вообще умеет создавать их на стеке

Nameless
05.10.2018
19:29:56


Google
Quantum Harmonizer
05.10.2018
19:30:51
вот этого я ожидал :)

Nameless
05.10.2018
19:31:18
пару раз прогнал, indexed на 0-10% быстрее

Benchmark Mode Cnt Score Error Units BenchMark.indexed thrpt 10 925.891 ± 23.426 ops/s BenchMark.iterator thrpt 10 887.582 ± 25.611 ops/s

Руслан
05.10.2018
19:44:40
пару раз прогнал, indexed на 0-10% быстрее
Вот это я понимаю допуски

Bogdan
05.10.2018
19:46:20
пару раз прогнал, indexed на 0-10% быстрее
А теперь добавь рандомной логику (не примитивную)

Nameless
05.10.2018
19:47:03
Вот это я понимаю допуски
За что купил за то и продаю

Bogdan
05.10.2018
19:50:58
За что купил за то и продаю
Ну вот, ты продаешь конкретный случай. Зачастую бизнес логика больше влияет на скорость чем цикыл, и этим стоит заниматься когда прижало, нужна скорость. Посмотри доклады Шипилева. Ну и если ты со старта циклы пыиаешь оптимизировать, может в с нада кодит, или напрямую инструкциями

Выиграешь еще 1к оп/с

Простого гет из масива

Руслан
05.10.2018
19:53:15
Да и зачем переписывать если можно сразу написать indexed
Говнокод который я сразу конверчу в нормальные циклы

Nameless
05.10.2018
19:53:31
Я про то что ты сравниваешь конкретный пример
Да я спрашивал конкретный пример, что я сделал не так?

Говнокод который я сразу конверчу в нормальные циклы
Ну у каждого свои границы говнокода ?

Руслан
05.10.2018
19:54:41
К счастью в котлин изначально нельзя так писать

Bogdan
05.10.2018
19:55:46
Да я спрашивал конкретный пример, что я сделал не так?
Голые циклы часто пишешь? Я вод достаю элемент из колекции и работаю с ним, и эта работа дороже. Ну и самое главное jit все схавает, ну или аот

Nameless
05.10.2018
19:55:52

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