Read Bloch.  Don’t optimize until you have proven that this bit of code is 
causing a significant performance hit. 
arrayCopy can and is inlined by jit. 

Chas

> On Feb 16, 2018, at 5:53 AM, Stian Soiland-Reyes <st...@apache.org> wrote:
> 
> String is still a type of Object (requiring GC handling of reference
> counters), as you can do Object[] o = stringArray.clone(); without
> casting.  (other way not so)
> 
> https://www.javaspecialists.eu/archive/Issue124.html says there is
> hardly any difference, so I don't think we need to fight this one out
> and can just go with the cleanest code :)
> 
>> On 16 February 2018 at 11:22, sebb <seb...@gmail.com> wrote:
>>> On 16 February 2018 at 10:01, Stian Soiland-Reyes <st...@apache.org> wrote:
>>> I agree in general for .clone() on objects - and I'm trying to move
>>> away from using .clone() in that Commons RDF fluent mutable/immutable
>>> builder (See COMMONSRDF-49).
>>> 
>>> But this is an Object[] - a native type.
>> 
>> Huh?
>> 
>> The code says String[], which is native as it's final.
>> 
>> Object[] may not be native
>> 
>>> I must admit I am not sure what is really the preferred way - I
>>> thought .clone() is best as the VM can copy an array natively however
>>> it wants, while with Arrays.copyOf it might have to check if length is
>>> the same before doing anything clever.
>> 
>> In the specific case of String[] it might be OK to use clone, but in
>> general it's better to use the proper JVM methods and not try to
>> second-guess how efficient they are.
>> 
>>>> On 13 February 2018 at 18:58, Gilles <gil...@harfang.homelinux.org> wrote:
>>>>> On Tue, 13 Feb 2018 18:40:13 +0000, sebb wrote:
>>>>> 
>>>>>> On 13 February 2018 at 09:31, Gilles <gil...@harfang.homelinux.org> 
>>>>>> wrote:
>>>>>> 
>>>>>>> On Tue, 13 Feb 2018 00:16:13 +0000 (UTC), st...@apache.org wrote:
>>>>>>> 
>>>>>>> 
>>>>>>> Repository: commons-csv
>>>>>>> Updated Branches:
>>>>>>>  refs/heads/CSV-216 637ad2d7a -> f66a83901
>>>>>>> 
>>>>>>> 
>>>>>>> CSV-216: Avoid Arrays.copyOf()
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Why?
>>>>> 
>>>>> 
>>>>> Agreed
>>>>> 
>>>>>>> as .clone() will do
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> We should rather avoid using "clone()".
>>>>> 
>>>>> 
>>>>> Again: why?
>>>> 
>>>> 
>>>> There are many discussions about this topic on the web.[1]
>>>> My point is that using "clone()" is not good advice.
>>>> 
>>>> Gilles
>>>> 
>>>> [1] E.g. http://vojtechruzicka.com/java-cloning-problems/
>>>> 
>>>> 
>>>>> It's not clear why Arrays.copyOf(0 is considered bad, nor why clone()
>>>>> is considered bad.
>>>>> 
>>>>> 
>>>>>> Gilles
>>>>>> 
>>>>>> 
>>>>>>> -- at least until someone tries to do
>>>>>>> .withValue(x) in an out-of-range column
>>>>>>> 
>>>>>>> 
>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/commons-csv/repo
>>>>>>> Commit:
>>>>>>> http://git-wip-us.apache.org/repos/asf/commons-csv/commit/f66a8390
>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/commons-csv/tree/f66a8390
>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/commons-csv/diff/f66a8390
>>>>>>> 
>>>>>>> Branch: refs/heads/CSV-216
>>>>>>> Commit: f66a83901bd026369a2e8d522bd567eb2ef3f8c0
>>>>>>> Parents: 637ad2d
>>>>>>> Author: Stian Soiland-Reyes <st...@apache.org>
>>>>>>> Authored: Fri Feb 9 16:49:51 2018 +0000
>>>>>>> Committer: Stian Soiland-Reyes <st...@apache.org>
>>>>>>> Committed: Tue Feb 13 00:14:52 2018 +0000
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> ----------------------------------------------------------------------
>>>>>>> src/main/java/org/apache/commons/csv/CSVRecord.java | 4 ++--
>>>>>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>>>>> 
>>>>>>> 
>>>>>>> ----------------------------------------------------------------------
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> http://git-wip-us.apache.org/repos/asf/commons-csv/blob/f66a8390/src/main/java/org/apache/commons/csv/CSVRecord.java
>>>>>>> 
>>>>>>> 
>>>>>>> ----------------------------------------------------------------------
>>>>>>> diff --git a/src/main/java/org/apache/commons/csv/CSVRecord.java
>>>>>>> b/src/main/java/org/apache/commons/csv/CSVRecord.java
>>>>>>> index 979119f..2be5c49 100644
>>>>>>> --- a/src/main/java/org/apache/commons/csv/CSVRecord.java
>>>>>>> +++ b/src/main/java/org/apache/commons/csv/CSVRecord.java
>>>>>>> @@ -199,7 +199,7 @@ public class CSVRecord implements Serializable,
>>>>>>> Iterable<String> {
>>>>>>>     public final CSVRecord immutable() {
>>>>>>>        if (isMutable()) {
>>>>>>>                // Subclass is probably CSVMutableRecord, freeze values
>>>>>>> -               String[] frozenValue = Arrays.copyOf(values,
>>>>>>> values.length);
>>>>>>> +               String[] frozenValue = values.clone();
>>>>>>>                return new CSVRecord(frozenValue, mapping, comment,
>>>>>>> recordNumber, characterPosition);
>>>>>>>        } else {
>>>>>>>                return this;
>>>>>>> @@ -260,7 +260,7 @@ public class CSVRecord implements Serializable,
>>>>>>> Iterable<String> {
>>>>>>>        if (isMutable()) {
>>>>>>>                return this;
>>>>>>>        }
>>>>>>> -               String[] newValues = Arrays.copyOf(values,
>>>>>>> values.length);
>>>>>>> +               String[] newValues = values.clone();
>>>>>>>        return new CSVMutableRecord(newValues, mapping, comment,
>>>>>>> recordNumber, characterPosition);
>>>>>>>        }
>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>> 
>>> 
>>> 
>>> 
>>> --
>>> Stian Soiland-Reyes
>>> http://orcid.org/0000-0001-9842-9718
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> For additional commands, e-mail: dev-h...@commons.apache.org
>> 
> 
> 
> 
> -- 
> Stian Soiland-Reyes
> http://orcid.org/0000-0001-9842-9718
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to