Если известно, что obj != null
, то лучше писать sb.append(obj.toString())
, чем sb.append(obj)
, чтобы избежать лишнего вызова String.valueOf(obj)
Если известно, что obj != null
, то лучше писать sb.append(obj.toString())
, чем sb.append(obj)
, чтобы избежать лишнего вызова String.valueOf(obj)
@mugiseyebrows таки компайлер не подставит всё как надо. алсо, конкатенацию строк плюсиками в цикле делают только мудаки
@krkm ну бля охуей теперь
уау // поссал в ебло за прожигание энтропии на бездарную микрооптимизацию
ты не понимаешь, что этот твой лишний вызов произойдёт ТУТ ЖЕ за первым, и за счёт прогретости кешей выполнится мгновенно [на два порядка быстрее первого вызова] ?
ты не понимаешь, что пока кратчайшее описание твоей микрооптимизации занимает меньше трех страниц папира — скорее всего, где-то эта оптимизация делается уже и лучше автоматически?
// не имея измерений подперднул с дивана и немножко промочил себе лицо капелькой собственной мочи
@hirthwork конкатенацию строк плюсиками в цикле делают абстракциебоги, посмеиваясь над ничтожествами с C-style нультерминированными строками из прошлого тысячелетия // которые даже не поддерживают O(1) .length()
@krkm шо
@komar пук
@komar хули оверхед? а что если я smartass и заранее знаю верхний лимит по длине? что теперь, съел?
@komar я могу её знать (потому что я пишу цикл)
@krkm говна поешь
@komar это сделает плюсик blazingly fast за счёт нуля реаллокаций
но даже и без знания аппербаунда с неуёбищными (паскалевскими) строками конкатенация N строк в цикле = O(N), а не O(N²), этого уже более чем достаточно (ты не сделаешь быстрее)
@mugiseyebrows ето чувство когда мейнстримное дерьмо без third party library не умеет даже распечатать std::vector
@komar што join? сложность какая? +пруф что меньше O(N)
@mugiseyebrows хуита, чувак, хуита, не скейлится совсем нихуя
@komar ты тупой как доска просто
@mugiseyebrows вложенные данные ты как печатать будешь? что если у меня std::vector<company> и struct company { std::vector<Employee> hooey; ... } ?
@komar быстрее алгоритмически блядь, в жабомифе O(N²) конкатенация строк через плюсик
про join заебись аргумент, но с паскалевкими строками плюсик в цикле настолько же хорошо прокатит
@ulidtko твоя оценка сверху может оказаться слишком грубой, чтобы оптимизировать лишнюю аллокацию-две
@mugiseyebrows а для вектора, тьюплов и мапов где определять? с полной общностью это сука никуда не лезет, ни в каком файле неуместно, кроме MISC_PARASHA.cpp — а там уже дохуя
@hirthwork да join вон возьми и успокойся, посчитаешь всё заранее с точностью до байта
@krkm dae рыночная наука
@komar :)
-O1 (вместо -O2) тогда хуле
@komar
починил
@mugiseyebrows тьюпл в лог пишу // сорь
@krkm что ті нєсешь, кому ето вігодно?
нашли что обсудить, блин. про преаллокацию большого буфера у StringBuilder я так скажу, тырпрайз пацаны потом делают
new String(sb)
чтобы шарить буфер StringBuilder, так что выделив большой буфер ты рискуешь сделать его долгоживущим@krkm сорь, я сегодня слить забыл просто (у твоей мамки выходной)
@krkm ^^^ я б поитерировал (безопасно)
@krkm :3