String concatenation tweaks
Remi Forax
forax at univ-mlv.fr
Fri Jun 5 13:52:16 UTC 2015
Ali,
javac already concatenates constant strings,
so your first example generates only 6 calls to append() :)
cheers,
Rémi
On 06/05/2015 03:45 PM, Ali Ebrahimi wrote:
> Hi,
>
>
> On Thu, Jun 4, 2015 at 9:43 PM, Aleksey Shipilev
> <aleksey.shipilev at oracle.com <mailto:aleksey.shipilev at oracle.com>> wrote:
>
> On 06/04/2015 04:59 PM, Ali Ebrahimi wrote:
> > Please add String Interpolation and Multi-line String: in that
> case we
> > would have better answer for problem.
>
> Neither String interpolation nor multi-line Strings are supported by
> current Java language, so throwing these in mix promotes the issue
> into
> extending the language. Not fun.
>
> I think, I don't say java already support them, but I beleave java
> should support them.
>
>
> In addition, Multi-line Strings is purely a syntax issue, not the
> bytecode interface one, and so it seems rather unrelated.
>
> I don't think so.
> consider this code:
>
> String chart = " var chart = new Highcharts.Chart({\n" +
> " chart: {\n" +
> " zoomType: 'x',\n" +
> " height: " + chartHeight + ",\n" +
> " width: " + chartWidth + ",\n" +
> " type: 'column',\n" +
> " plotBackgroundImage: '',\n" +
> " renderTo: '" + id + "',\n" +
> " \tevents: {\n" +
> " \t\tclick: function(e) {\n" +
> " \t\t\t//CHARTCLICK_HANDLER_CODE\n" +
> " \t\t}\n" +
> " \t}\n" +
> " },\n";
> needs 20 sb.append call
>
> vs multi-line string
>
> String chart = " var chart = new Highcharts.Chart({\n
> chart: {\n
> zoomType: 'x',\n
> height: " + chartHeight + ",\n
> width: " + chartWidth + ",\n
> type: 'column',\n
> plotBackgroundImage: ' ',\n
> renderTo: '" + id + "',\n
> \tevents: {\n
> \t\tclick: function(e) {\n
> \t\t\t//CHARTCLICK_HANDLER_CODE\n
> \t\t}\n
> \t}\n
> },\n";
> 6 sb.append call
>
> vs multi-line string & String Interpolation
>
> String chart = $" var chart = new Highcharts.Chart({\n
> chart: {\n
> zoomType: 'x',\n
> height: ${chartHeight },\n
> width: ${chartWidth },\n
> type: 'column',\n
> plotBackgroundImage: ' ',\n
> renderTo: '${ id }',\n
> \tevents: {\n
> \t\tclick: function(e) {\n
> \t\t\t//CHARTCLICK_HANDLER_CODE\n
> \t\t}\n
> \t}\n
> },\n";
> This depend on implementation detail but max 6 sb.append call
> I think with multi-line string & String Interpolation javac have
> better view of overall string expressions and can generate optimized
> bytecode.
>
> In other side, we have improved code readability.
>
> --
>
> Best Regards,
> Ali Ebrahimi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20150605/a9de67f8/attachment-0001.html>
More information about the compiler-dev
mailing list