[ 
https://issues.apache.org/jira/browse/CAY-1803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13604942#comment-13604942
 ] 

Andrus Adamchik edited comment on CAY-1803 at 3/18/13 8:39 AM:
---------------------------------------------------------------

Analyzing my profiling logs, and this stack appears quite often:

2013/03/15 19:02:00 qtp30216319-58      at 
java.security.AccessController.doPrivileged(Native Method)
2013/03/15 19:02:00 qtp30216319-58      at 
java.io.PrintWriter.<init>(PrintWriter.java:78)
2013/03/15 19:02:00 qtp30216319-58      at 
java.io.PrintWriter.<init>(PrintWriter.java:62)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.exp.Expression.toString(Expression.java:667)
2013/03/15 19:02:00 qtp30216319-58      at 
java.lang.String.valueOf(String.java:2826)
2013/03/15 19:02:00 qtp30216319-58      at 
java.lang.StringBuilder.append(StringBuilder.java:115)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.query.SelectQueryMetadata.resolve(SelectQueryMetadata.java:65)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.query.SelectQuery.getMetaData(SelectQuery.java:210)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.util.ObjectContextQueryAction.<init>(ObjectContextQueryAction.java:81)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.access.DataContextQueryAction.<init>(DataContextQueryAction.java:49)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.access.DataContext.onQuery(DataContext.java:930)

It does cache key generation... this should be sped up.

I guess we should simply change encodeAsString(PrintWriter pw) to 
encodeAsString(Applendable pw), as both StringBuilder and PrintWriter are 
Appendable.
                
      was (Author: andrus):
    We may want to expand the scope of toString improvements, or maybe 
implement Expression.toStringBuilder()... Analyzing my profiling logs, and this 
stack appears quite often:

2013/03/15 19:02:00 qtp30216319-58      at 
java.security.AccessController.doPrivileged(Native Method)
2013/03/15 19:02:00 qtp30216319-58      at 
java.io.PrintWriter.<init>(PrintWriter.java:78)
2013/03/15 19:02:00 qtp30216319-58      at 
java.io.PrintWriter.<init>(PrintWriter.java:62)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.exp.Expression.toString(Expression.java:667)
2013/03/15 19:02:00 qtp30216319-58      at 
java.lang.String.valueOf(String.java:2826)
2013/03/15 19:02:00 qtp30216319-58      at 
java.lang.StringBuilder.append(StringBuilder.java:115)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.query.SelectQueryMetadata.resolve(SelectQueryMetadata.java:65)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.query.SelectQuery.getMetaData(SelectQuery.java:210)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.util.ObjectContextQueryAction.<init>(ObjectContextQueryAction.java:81)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.access.DataContextQueryAction.<init>(DataContextQueryAction.java:49)
2013/03/15 19:02:00 qtp30216319-58      at 
org.apache.cayenne.access.DataContext.onQuery(DataContext.java:930)

It does cache key generation... this should be sped up.
                  
> Define toString() in path expressions
> -------------------------------------
>
>                 Key: CAY-1803
>                 URL: https://issues.apache.org/jira/browse/CAY-1803
>             Project: Cayenne
>          Issue Type: Improvement
>            Reporter: Andrus Adamchik
>            Assignee: Andrus Adamchik
>            Priority: Trivial
>             Fix For: 3.2M1
>
>
> Expression.toString() is pretty heavy:
>  @Override
>     public String toString() {
>         StringWriter buffer = new StringWriter();
>         PrintWriter pw = new PrintWriter(buffer);
>         encodeAsString(pw);
>         pw.close();
>         buffer.flush();
>         return buffer.toString();
>     }
> We didn't bother much about it, as it wasn't supposed to be called in 
> runtime... Well it is sometimes:
> SelectTranslator,java:
> 433 String labelPrefix = pathExp.toString().substring("db:".length());
> And I am seeing this line occasionally in my app profiling reports. So we 
> need to override "toString" at least for ASTObjPath and ASTDbPath with a 
> lighter implementation

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to