Когда у меня есть String, мне нужно конкатенировать один char до конца,
должен ли я s = .... + ']'
превышать s = .... + "]"
для любой причины производительности?
Я знаю объединение строк массива и строковых построек, и я НЕ прошу предложений о том, как объединить строки в целом.
Я также знаю, что некоторые из них захотят объяснить мне о преждевременных оптимизациях и что в целом я не должен беспокоиться о таких незначительных вещах, пожалуйста, не...
Я спрашиваю, потому что из предпочтений стиля кодирования я предпочел бы использовать позже, но мне кажется, что первый должен работать немного лучше, потому что знание того, что добавляется, - это всего лишь один char, нет необходимости в каком-либо внутреннем цикле, проходящем через этот единственный char, как это может быть при копировании одного символьная строка.
Обновление
Как @Scheintod написал, что это действительно теоретический Q, и он должен сделать больше с моим желанием лучше понять, как работает java и меньше с любой реальной жизнью "позволяет сохранить другой микросекундный" сценарий... возможно, я должен был сказать это более четко.
Мне нравится понимать, как все работает "за кулисами". И я нахожу, что он может когда-нибудь помочь мне создать лучший код...
Правда - я вообще не думал о оптимизации компилятора...
Я бы не ожидал, что JIT будет использовать StringBuilder
вместо String
для меня...
Поскольку я (возможно, ошибочно) думаю, что строковые сборщики являются "более тяжелыми", тогда Strings с одной стороны, но быстрее при создании и изменении строк с другой стороны. Поэтому я предполагаю, что в некоторых случаях использование StringBuilder
было бы еще менее эффективным, чем использование stings... (если бы это было не так, то весь класс String должен был иметь свою реализацию, чтобы она была такой, как версия StringBuilder
и использовать некоторое внутреннее представление для реальных неизменяемых строк... - или это то, что делает JIT? - считая, что в общем случае, вероятно, лучше не позволить разработчику выбирать...)
Если это меняет мой код до такой степени, возможно, My Q должен был быть на этом уровне, спрашивая, подходит ли JIT для выполнения чего-то подобного, и было бы лучше, если бы он использовался.
Возможно, мне стоит начать поиск скомпилированного байтового кода... [Мне нужно научиться делать это в java...]
В качестве побочного примечания и примера того, почему я даже подумал о том, чтобы посмотреть на байт-код, посмотрите на довольно старый пост в блоге о Оптимизация Actionscript 2.0 - с точки зрения байт-кода - часть I, это показывает, что знание того, что ваш код компилирует, действительно может помочь вам написать лучший код.