[jira] [Commented] (TEXT-99) Performance Degradation for Escaping JSON

2017-10-13 Thread Pascal Schumacher (JIRA)

[ 
https://issues.apache.org/jira/browse/TEXT-99?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16203785#comment-16203785
 ] 

Pascal Schumacher commented on TEXT-99:
---

Thanks for reporting!

I could not find any difference in the implementations that seemed to be the 
cause of this regression, so I have no idea how to fix it.

I sadly lack knowledge in this area, so I won't be able to implement the  
suggested `java.io.write(char cbuf[], int off, int len)` change.

Pull requests welcome!

> Performance Degradation for Escaping JSON
> -
>
> Key: TEXT-99
> URL: https://issues.apache.org/jira/browse/TEXT-99
> Project: Commons Text
>  Issue Type: Bug
>Affects Versions: 1.1
> Environment: OS X 10.11.6
> java version "1.8.0_60"
> Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
> Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
> JProfiler 9.1 (Build 9128)
>Reporter: Tom Howard
>Priority: Minor
>  Labels: escape, json, performance
>
> There seams to be a small performance degradation on 
> StringEscapeUtils.escapeJson(String) in commons-text v1.1 compared to 
> commons-lang3 v3.5
> I have a performance test that involves (amongst other things) escaping 
> 200,052 strings. Using commons-text v1.1 this consistently takes 100ms to 
> 110ms. Using commons-lang3 v3.5 this consistently takes 92ms to 95ms.
> Also, after escaping I'm writing it to using java.io.Writer.write(String). I 
> would have assumed that StringEscapeUtils.ESCAPE_JSON.translate(CharSequence, 
> writer) would yield better performance, however in the same test, using this 
> method constantly takes approx 210ms and the parent method (which serialises 
> the entire payload to JSON) takes approx 1750ms compared to approx 1400ms 
> using StringEscapeUtils.escapeJson(String) from commons-lang3 v3.5
> I've marked the issue as minor, as it doesn't really impact me, but I thought 
> I should share my findings.
> The serialiser can be found at 
> https://github.com/mountain-pass/ryvr/blob/master/src/main/java/au/com/mountainpass/ryvr/io/RyvrSerialiser.java
>  and the performance test can be executed using `./gradlew 
> testRyvrTests_Integration_Performance_Java_H2Local`
> Also, I should mention that StringEscapeUtils.escapeJson is an order of 
> magnitude faster than the equivalents from:
> - org.json:json:20170516
> - org.unbescape:unbescape:1.1.5.RELEASE
> - com.googlecode.json-simple:1.1.1
> - net.minidev:son-smart:2.3
> They literally take over 1000ms to do what StringEscapeUtils.escapeJson() 
> does in about 100ms. If there are any other libs you would like me to test 
> against for comparison purposes, please let me know.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (TEXT-99) Performance Degradation for Escaping JSON

2017-08-16 Thread Tom Howard (JIRA)

[ 
https://issues.apache.org/jira/browse/TEXT-99?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16129572#comment-16129572
 ] 

Tom Howard commented on TEXT-99:


FYI StringEscapeUtils.ESCAPE_JSON.translate(CharSequence, writer) appears to be 
slower because it calls `java.io.write(int c)`, which results in a large number 
of memory allocations before, which causes excessive GC load. Better to call 
`java.io.write(char cbuf[], int off, int len)` instead.

> Performance Degradation for Escaping JSON
> -
>
> Key: TEXT-99
> URL: https://issues.apache.org/jira/browse/TEXT-99
> Project: Commons Text
>  Issue Type: Bug
>Affects Versions: 1.1
> Environment: OS X 10.11.6
> java version "1.8.0_60"
> Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
> Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
> JProfiler 9.1 (Build 9128)
>Reporter: Tom Howard
>Priority: Minor
>  Labels: escape, json, performance
>
> There seams to be a small performance degradation on 
> StringEscapeUtils.escapeJson(String) in commons-text v1.1 compared to 
> commons-lang3 v3.5
> I have a performance test that involves (amongst other things) escaping 
> 200,052 strings. Using commons-text v1.1 this consistently takes 100ms to 
> 110ms. Using commons-lang3 v3.5 this consistently takes 92ms to 95ms.
> Also, after escaping I'm writing it to using java.io.Writer.write(String). I 
> would have assumed that StringEscapeUtils.ESCAPE_JSON.translate(CharSequence, 
> writer) would yield better performance, however in the same test, using this 
> method constantly takes approx 210ms and the parent method (which serialises 
> the entire payload to JSON) takes approx 1750ms compared to approx 1400ms 
> using StringEscapeUtils.escapeJson(String) from commons-lang3 v3.5
> I've marked the issue as minor, as it doesn't really impact me, but I thought 
> I should share my findings.
> The serialiser can be found at 
> https://github.com/mountain-pass/ryvr/blob/master/src/main/java/au/com/mountainpass/ryvr/io/RyvrSerialiser.java
>  and the performance test can be executed using `./gradlew 
> testRyvrTests_Integration_Performance_Java_H2Local`
> Also, I should mention that StringEscapeUtils.escapeJson is an order of 
> magnitude faster than the equivalents from:
> - org.json:json:20170516
> - org.unbescape:unbescape:1.1.5.RELEASE
> - com.googlecode.json-simple:1.1.1
> - net.minidev:son-smart:2.3
> They literally take over 1000ms to do what StringEscapeUtils.escapeJson() 
> does in about 100ms. If there are any other libs you would like me to test 
> against for comparison purposes, please let me know.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)