[jira] [Commented] (CSV-43) CSVFormat fluent API is rather inefficient

2012-03-10 Thread Emmanuel Bourg (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-43?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13226848#comment-13226848
 ] 

Emmanuel Bourg commented on CSV-43:
---

What is the efficiency issue you are concerned with? Is it the creation of 5 
instances to define a format?

 CSVFormat fluent API is rather inefficient
 --

 Key: CSV-43
 URL: https://issues.apache.org/jira/browse/CSV-43
 Project: Commons CSV
  Issue Type: Improvement
Reporter: Sebb

 The implementation of the CSVFormat fluent API is rather inefficient, as each 
 method invocation clones the original class instance.
 Now that the fields are volatile, it would be possible to do away with the 
 clone() calls entirely.
 This would mean that the format could be updated later.
 If such usage is not desirable, then perhaps consider adding some kind of 
 freeze method to prevent further changes.
 Or perhaps the parse() and format() methods could perform the freeze (e.g. 
 set a flag to disable further updates).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-43) CSVFormat fluent API is rather inefficient

2012-03-10 Thread Sebb (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-43?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13226862#comment-13226862
 ] 

Sebb commented on CSV-43:
-

Yes, every fluent method creates a new instance. That seems very wasteful.

 CSVFormat fluent API is rather inefficient
 --

 Key: CSV-43
 URL: https://issues.apache.org/jira/browse/CSV-43
 Project: Commons CSV
  Issue Type: Improvement
Reporter: Sebb

 The implementation of the CSVFormat fluent API is rather inefficient, as each 
 method invocation clones the original class instance.
 Now that the fields are volatile, it would be possible to do away with the 
 clone() calls entirely.
 This would mean that the format could be updated later.
 If such usage is not desirable, then perhaps consider adding some kind of 
 freeze method to prevent further changes.
 Or perhaps the parse() and format() methods could perform the freeze (e.g. 
 set a flag to disable further updates).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-43) CSVFormat fluent API is rather inefficient

2012-03-10 Thread Oliver Heger (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-43?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13226880#comment-13226880
 ] 

Oliver Heger commented on CSV-43:
-

Wouldn't this be a good candidate for the builder pattern (Bloch, Effective 
Java, item 2)? The nested Builder class implements the fluent interface and 
eventually creates an immutable instance of CSVFormat. Maybe, as an extension, 
the Builder could be seeded with an existing CSVFormat instance if a new 
instance is to be derived from an existing one.

 CSVFormat fluent API is rather inefficient
 --

 Key: CSV-43
 URL: https://issues.apache.org/jira/browse/CSV-43
 Project: Commons CSV
  Issue Type: Improvement
Reporter: Sebb

 The implementation of the CSVFormat fluent API is rather inefficient, as each 
 method invocation clones the original class instance.
 Now that the fields are volatile, it would be possible to do away with the 
 clone() calls entirely.
 This would mean that the format could be updated later.
 If such usage is not desirable, then perhaps consider adding some kind of 
 freeze method to prevent further changes.
 Or perhaps the parse() and format() methods could perform the freeze (e.g. 
 set a flag to disable further updates).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-43) CSVFormat fluent API is rather inefficient

2012-03-10 Thread Sebb (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-43?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13226888#comment-13226888
 ] 

Sebb commented on CSV-43:
-

Yes, a builder would also work, and would allow the class to be truly immutable.
However it would mean bigger changes to the API.

A simpler fix would be to add a flag to reject further changes.
Not immutable, but thread-safe since code uses volatile.

Either fix would be fine by me.

 CSVFormat fluent API is rather inefficient
 --

 Key: CSV-43
 URL: https://issues.apache.org/jira/browse/CSV-43
 Project: Commons CSV
  Issue Type: Improvement
Reporter: Sebb

 The implementation of the CSVFormat fluent API is rather inefficient, as each 
 method invocation clones the original class instance.
 Now that the fields are volatile, it would be possible to do away with the 
 clone() calls entirely.
 This would mean that the format could be updated later.
 If such usage is not desirable, then perhaps consider adding some kind of 
 freeze method to prevent further changes.
 Or perhaps the parse() and format() methods could perform the freeze (e.g. 
 set a flag to disable further updates).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-43) CSVFormat fluent API is rather inefficient

2012-03-10 Thread Emmanuel Bourg (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-43?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13226898#comment-13226898
 ] 

Emmanuel Bourg commented on CSV-43:
---

It's less efficient than a direct instantiation, but that doesn't make the API 
inefficient. The critical part is the parsing, concerns about the efficiency 
should be focused on this part of the code.

I don't want to make the API more complex with an additional CSVFormatBuilder 
class or extra steps to define a format. This is quite similar to the design of 
the Guava API for example, such as the Joiner/Splitter classes.

 CSVFormat fluent API is rather inefficient
 --

 Key: CSV-43
 URL: https://issues.apache.org/jira/browse/CSV-43
 Project: Commons CSV
  Issue Type: Improvement
Reporter: Sebb

 The implementation of the CSVFormat fluent API is rather inefficient, as each 
 method invocation clones the original class instance.
 Now that the fields are volatile, it would be possible to do away with the 
 clone() calls entirely.
 This would mean that the format could be updated later.
 If such usage is not desirable, then perhaps consider adding some kind of 
 freeze method to prevent further changes.
 Or perhaps the parse() and format() methods could perform the freeze (e.g. 
 set a flag to disable further updates).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CSV-43) CSVFormat fluent API is rather inefficient

2012-03-09 Thread Sebb (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/CSV-43?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13226591#comment-13226591
 ] 

Sebb commented on CSV-43:
-

OK, but so long as the predefined formats are frozen, it would still be 
possible to code the fluent API more efficiently.

The simplest way would be to add a flag that stops further updates.

 CSVFormat fluent API is rather inefficient
 --

 Key: CSV-43
 URL: https://issues.apache.org/jira/browse/CSV-43
 Project: Commons CSV
  Issue Type: Improvement
Reporter: Sebb

 The implementation of the CSVFormat fluent API is rather inefficient, as each 
 method invocation clones the original class instance.
 Now that the fields are volatile, it would be possible to do away with the 
 clone() calls entirely.
 This would mean that the format could be updated later.
 If such usage is not desirable, then perhaps consider adding some kind of 
 freeze method to prevent further changes.
 Or perhaps the parse() and format() methods could perform the freeze (e.g. 
 set a flag to disable further updates).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira