
Берял
21.09.2016
11:03:40

Vitaliy
21.09.2016
11:03:50
Поэтому если пишешь быстро — пиши быстро все сразу

Берял
21.09.2016
11:04:18

Google

Vitaliy
21.09.2016
11:04:30
У тебя может быть конкатенация объектов в цикле
Вот тебе и узкое место

Igor
21.09.2016
11:04:35
даже интересно, есть ли тут люди с опытом, у которых производительность в toString упёрлась :D
и писали бы не на джаве, а на си

Vitaliy
21.09.2016
11:06:37
Мы и пишем на Си, когда надо
А по поводу performance matters — посмотрите в сторону либы от ОК для работы с сетью
Там почти все в нативе лежит, чтобы избежать чрезмерного вызова GC при работе с большими данными
А когда вы пишете на Java интерфейс и пытаетесь оптимизировать его под 60FPS, значние имеет примерно ВСЁ

Maksim
21.09.2016
11:08:55

Берял
21.09.2016
11:09:30
какое-то странное соотношение задач и технологий

Vitaliy
21.09.2016
11:09:41
Потому что Андроид, лол

Берял
21.09.2016
11:10:13
это сарказм в тему производительности используемых технологий

Google

Vitaliy
21.09.2016
11:10:48
?
Итератор это объект, он занимает место в памяти, для него будет вызван GC. Если коллекция поддерживает оптимизированный доступ по индексам(то есть это не какой-нибудь LinkedList), и не модицицируется из разных потоков, это реально нужно.

Берял
21.09.2016
11:11:03
не могу представить необходимость оптимизировать toString, тем более таким варварским методом как обычная конкатенация строк

Vitaliy
21.09.2016
11:11:17
Иначе при итерации Drawable в каком-нибудь onDraw() будет создаваться 60 объектов в секунду только для одной вьюшки
На NDK единственный способ писать интерфейс с аппаратным ускорением это вручную юзать OpenGL
Так что нет

Берял
21.09.2016
11:12:12
хочется и рыбку съесть
и на джаве писать

Vitaliy
21.09.2016
11:12:28
Нет необходимости — если писать правильный код на Java, то будет 60 fps + небольшой запас сверху
Но toString() писать через format у нас нельзя. Банально потому что ты н знаешь, в каких местах ты его использовать будешь

Maksim
21.09.2016
11:13:41

Vitaliy
21.09.2016
11:13:46
Увы
Реально ужасно
И никто не заморачивается — поэтому почти все приложения под Android тормозят

Берял
21.09.2016
11:14:41
врятли поэтому

Maksim
21.09.2016
11:14:46

Vitaliy
21.09.2016
11:15:02
А я замечаю регулярно на Nexus 6P

Игорь
21.09.2016
11:15:23
Подскажите как реализовать работу с БД в webSocket? Нужно для каждого пользователя держать соединение с базой? или брать соединение только на момент транкзации ?

Берял
21.09.2016
11:15:35
мощности смартфонов позволяют писать плохой код на уровне приложений, просто платформа и сам андроед не очень хороши

Vitaliy
21.09.2016
11:15:44
врятли поэтому
Поэтому. Ещё и потому что часть всяких библиотек не совсем под мобилки заточена. Rx, например, флудит функторами на каждый чих

Google

Vitaliy
21.09.2016
11:16:05

Берял
21.09.2016
11:16:15
и пишется на управляемом коде

Vitaliy
21.09.2016
11:16:25
Хотя железо мощнее айфона
Вот от этого и идут все наши проблемы

Берял
21.09.2016
11:16:47

Vitaliy
21.09.2016
11:17:04
Ну насколько я знаю, 6P все же мощнее

Oleksandr
21.09.2016
11:17:14
а вы вообще такой треш профилировали?
я на андроид не пишу, но нормальные джвм неплохо так оптимизируют

Vitaliy
21.09.2016
11:17:39
Мы нет, гугл да
У них есть страничка с рекомендациями

Oleksandr
21.09.2016
11:18:01
брр, мои соболезнования

Vitaliy
21.09.2016
11:18:03
Могу разве что собственным опытом поделиться — да, реально начинает меньше лагать
Посмотрите в сторону Telegram, например — у них куча таких оптимизаций, и работает быстрее гапсов

Vitaliy
21.09.2016
11:18:38
Хотя код адовый

Oleksandr
21.09.2016
11:19:15
компилятор -- друг человека, и именно он должен, в идеале, из "читаемого" кода делать "быстрый" код

Vitaliy
21.09.2016
11:20:14
Или из быстрого не быстрый :)

Oleksandr
21.09.2016
11:21:40
ну вон все те функторы-монады неплохо оптимизируются
что на андроиде, правда, совершенно не в курсе

Gerc
21.09.2016
12:25:22

Vitaliy
21.09.2016
12:25:33
Лямбды
Анонимные классы

Google

Vitaliy
21.09.2016
12:25:56

Ivan
21.09.2016
12:33:50
Ребят, подскажите пожалуйста. Использую древность, но все же интересно. Создал класс, который наследуется от Frame, свой компанент по сути, в нем на экран вывожу время текущее. Как сделать так, чтобы оно было нестатическим, а динамическим в реальном времени? пытался использовать repaint() - безуспешно

ThisIs
21.09.2016
13:07:25

Pavel
21.09.2016
13:08:23
больше похоже на awt ~_~

Admin
ERROR: S client not available

Ivan
21.09.2016
13:08:48
Да. Way
Awt

guga
21.09.2016
13:09:00
@fjfalcon настолько олдскул, что пишет смайлы руками. -_-

Pavel
21.09.2016
13:09:22
@guga4ka дак эта, я вообще мышку не люблю.
label? field?
просто вызывай каждую секунду label.setText()

Ivan
21.09.2016
13:12:00
Label да
Типа засунуть в поток некий?
И слип 1с?

Pavel
21.09.2016
13:12:49
да
хотя это хрень та еще
но тебе сойдет)))

Maksim
21.09.2016
13:13:04

Pavel
21.09.2016
13:13:12
я не отрицаю.

Google

Ivan
21.09.2016
13:13:16
ну а если как то по нормальному?

Maksim
21.09.2016
13:13:17
Но я всё равно ничего лучше не скажу)

Gerc
21.09.2016
13:13:18

Vitaliy
21.09.2016
13:13:37
Не тяжелые, но граф будет дольше обходиться

Maksim
21.09.2016
13:13:57

Pavel
21.09.2016
13:14:00
типа такого

Ivan
21.09.2016
13:14:43
Там засекать время и через schelude обновлять ktq,label?
каждую секунду

Pavel
21.09.2016
13:14:58
new Timer(1000, new ActionListener() { public void actionperformed(actioneventt e) label.setText(LocalDateTime.now())
.start
как то так
когда гуй строишь

sss3 ?
21.09.2016
13:15:47
на сколько я помню в AWT репаинт может сделать только тот поток который создал фрейм или чёт такое
если извне будешь перерисовывать будет ругаться