@kotlin_lang

Страница 589 из 982
Alex
16.03.2018
21:13:48
и так можно, просто можно, это меня радует

Andrew
16.03.2018
21:13:57
Мы тебе о том, что Bar().ext() -- это буквально создать объект bar, вызвать на нём экстеншн-функцию и выкинуть объект bar. Это ожидалось?

Как известно, из буханки хлеба, пары антеннок и прочей мелочи можно собрать троллейбус, но зачем? :)

Alex
16.03.2018
21:17:36
по принципу let{}, который в байт коде создает 2 ссылки, обсолютно согласен, тут их должно быть если я правильно посчитал аж 3 лижних, я и не спорил

Google
Andrew
16.03.2018
21:19:48
А как же BarFactory?
Дык вызывается внешний экстеншн на T, который Foo, а внутренний вызывается на Bar, но с его результатом ничего не делают. Разве что если он сам в лямбде заберёт эту ссылку -- но это выглядит слегка пахнущим интерфейсом.

Alex
16.03.2018
21:25:52
на самом деле была такая идея / - быстро | / - удобо читаемо если есть множество вызовов по сути одинаковых функций, ресурс не ограничен. companion object использовать нельзя, то почему бы упереться ну например так Foo() .extention<Foo, Foo.Bar> { doSomething() } .extention<Foo, Foo.Bar> { doSomething() doSomething() } .extention<Foo, Foo.Bar> { doSomething() }

*упороться, но по сути самое клевое в котлине что и так можно написать, всю программу

Arsen
16.03.2018
22:38:44
foo(strings = *arrayOf("a", "b", "c"))"Фрагмент из доков" что за звездочка перед методом?

oehdhs
16.03.2018
22:39:40
может vararg?

Arsen
16.03.2018
22:41:36
да точно, Spread Operator.

Dmitry
17.03.2018
07:40:33
То

Жабра
17.03.2018
11:16:18
Mi
17.03.2018
11:52:14
мерзкий синтаксис (((
spread operator из питона пришёл, и конечно было бы приятнее передавать как обычный варарг

Google
Сергей
17.03.2018
11:52:47
Который реально удобнее

Mi
17.03.2018
11:53:55
ты немного путаешь, ... в джаве служит для объявления варарга, а spread оператор нужен для преобразования обычного массива в варарг

в котлине сделали так, чтобы было видно при передаче параметра, варарг там или нет

Quantum Harmonizer
17.03.2018
11:57:46
в котлине сделали так, чтобы было видно при передаче параметра, варарг там или нет
* может гораздо больше, чем просто передача массива, например: listOf(1, 2, 3, *arrayOf(4, 5), 6)

Mi
17.03.2018
11:59:07
* может гораздо больше, чем просто передача массива, например: listOf(1, 2, 3, *arrayOf(4, 5), 6)
в любом случае это сводится к тому, что массив представляется в виде списка аргументов для варарга

Mikhail
17.03.2018
12:39:35
В жаваскрипте для тех же целей используется ...

Имхо, выглядит лучше

Жабра
17.03.2018
15:28:59
Кто-нибудь тестировал, как gson-ом быстрее всего парсить? Руками или доверить gson-у?

Или вообще написать какой-то кастомный парсер?

Sergey
17.03.2018
15:29:43
"быстрее" в плане написания кода или производительности?

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

Anton
17.03.2018
15:30:08
ты думаешь напишешь парсер быстрее чем гугловский гсон?)

Sergey
17.03.2018
15:30:21
и есть еще jackson :)

Anton
17.03.2018
15:30:23
он на рефлекшене и типа слоу

Quantum Harmonizer
17.03.2018
15:30:24
Quantum Harmonizer
17.03.2018
15:31:03
Кто-нибудь тестировал, как gson-ом быстрее всего парсить? Руками или доверить gson-у?
Рефлективно первый раз долго, потом терпимо. AST сравнимо с ним, но прожорливо. Стриминг утомительно писать.

Производительность
Gson не об этом.

Жабра
17.03.2018
15:31:25
Quantum Harmonizer
17.03.2018
15:31:36
:(
Даже так: JSON не об этом.

Google
Жабра
17.03.2018
15:31:53
Ну. это я знаю

Quantum Harmonizer
17.03.2018
15:34:42
Я тут недавно плакался в других чатах, что долго парсится и ничего нельзя сделать. Использовался org.json, я взял jsoniter (который быстрее Gson). JMH показал разниу в несколько раз. В Android на старте был такой же результат или медленнее, а уже последующие разы — быстрее.

Igor
17.03.2018
15:39:38
Кто-нибудь тестировал, как gson-ом быстрее всего парсить? Руками или доверить gson-у?
А что тормозит? Или тут ты решил заняться “преждевременной оптиизацией”

Денис
17.03.2018
15:42:24
Привет всем! Такой вопрос: IDE рекомендует юзать run вместо блока в лямбдах. типа emitter -> run{} вместо emitter -> {}, для чего это нужно?

Igor
17.03.2018
15:44:28
Рекомендует? Оно просто в результате некоторых рефакторингов там появляется (видимо что бы покрыть общий случай). Я если могу, то сразу удаляю.

Денис
17.03.2018
15:47:43
ну если пишешь тупо в блоке, весь код в не серым цветом идет. По сути разницы никакой не чувствуется

Anton
17.03.2018
15:48:08
значит че то не так пишешь

Денис
17.03.2018
15:50:02
точно, лямбды .. Спасибо, думаю стоит еще раз перечитать об особенностях лямбд в котлине

Mikhail
17.03.2018
15:55:59
изи, см. dsljson или jsoniter
jsiniter кстати какой-то странный, на одном тесте он был непозволительно медленным

Anton
17.03.2018
15:57:14
и какой ваш?

Sergey
17.03.2018
15:57:35
я написал https://github.com/wizzardo/json-benchmarks
а когда планируете kotlinx.serializer добавить?

Mikhail
17.03.2018
15:58:04
когда кому-нибудь кроме меня будет интересно, что лучше юзать для работы с json

Admin
ERROR: S client not available

Mikhail
17.03.2018
15:58:28
Интересно. На каком?
https://user-images.githubusercontent.com/5871626/37311915-670c1a8c-2649-11e8-8906-2f44fc420246.png

Sergey
17.03.2018
15:58:42
citys?

Google
Sergey
17.03.2018
15:58:44
cities?

Mikhail
17.03.2018
15:58:44
угу

больше - лучше, он там чего-то совсем зафейлился, работал, ноо крайне медленно

я знаю, что там опечатка, руки не доходят исправить, это было еще в оригинальном бенчмарке, который я форкнул

а когда планируете kotlinx.serializer добавить?
мне сейчас нужно допилить до релизного состояния свой сервер и оформить бенчмарки на него, вот после можно и котлиновские либы потыкать

Quantum Harmonizer
17.03.2018
16:16:23
мне сейчас нужно допилить до релизного состояния свой сервер и оформить бенчмарки на него, вот после можно и котлиновские либы потыкать
Дико интересно это всё. Потому что я прочитал стриминг jsoniter'а вдоль и поперёк и он мне кажется дико быстрым.

Mikhail
17.03.2018
16:25:59
Дико интересно это всё. Потому что я прочитал стриминг jsoniter'а вдоль и поперёк и он мне кажется дико быстрым.
ну такое, может он хорош на больших файлах, мегабайт на 100, хотя 2.5 мб парсит примерно полсекунды

Mikhail
17.03.2018
16:27:35
мерил парсинг в Map и Pojo, сериализацию из Map и Pojo

Quantum Harmonizer
17.03.2018
16:28:15
мерил парсинг в Map и Pojo, сериализацию из Map и Pojo
Я использую только стриминг, мне некогда маппить или собирать дерево)

Mikhail
17.03.2018
16:29:04
напишишь бенчмарк? или хотя бы пример использования?

Mikhail
17.03.2018
16:32:29
и так всегда)

Dmitry
17.03.2018
16:35:34
Извините за офтоп, но вместо джейсон файлов по 100 мегабайт, не лучше ли парсить бинарные форматы, типа протобафа? Всяко быстрее будет. И места меньше.

Quantum Harmonizer
17.03.2018
16:37:53
Извините за офтоп, но вместо джейсон файлов по 100 мегабайт, не лучше ли парсить бинарные форматы, типа протобафа? Всяко быстрее будет. И места меньше.
Лучше. У JSON нет ни одного адекватного плюса по сравнению с ними. Но там, кто спользует ноду или пхп, этого не понять.

Igor
17.03.2018
16:38:46
Но 100MB json очевидно не надо делать

Dmitry
17.03.2018
16:39:27
Согласен, но если у тебя 100 мегабайтный файл, но наглядным он не будет...

Quantum Harmonizer
17.03.2018
16:39:38
Есть, это наглядность - его можно просто читать программисту
proto-файл + бинарные данные = такой же читаемый текст

Igor
17.03.2018
16:39:58
Google
Sergey
17.03.2018
16:40:07
можно еще csv всякие юзать

формат для бедных)

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