You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ba...@apache.org on 2011/04/07 06:03:55 UTC
svn commit: r1089724 -
/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
Author: bayard
Date: Thu Apr 7 04:03:55 2011
New Revision: 1089724
URL: http://svn.apache.org/viewvc?rev=1089724&view=rev
Log:
Implemented the native CharSequence version of toCharArray
Modified:
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java?rev=1089724&r1=1089723&r2=1089724&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java (original)
+++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java Thu Apr 7 04:03:55 2011
@@ -6489,8 +6489,12 @@ public class StringUtils {
if (cs instanceof String) {
return ((String) cs).toCharArray();
} else {
- // TODO: Implement rather than convert to String
- return cs.toString().toCharArray();
+ int sz = cs.length();
+ char[] array = new char[cs.length()];
+ for (int i=0; i < sz; i++) {
+ array[i] = cs.charAt(i);
+ }
+ return array;
}
}
Re: svn commit: r1089724 - /commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
Posted by Henri Yandell <fl...@gmail.com>.
Sounds very reasonable, thanks for watching and commenting :)
Doing the performance check would be valuable (to know the magnitude),
but I agree that the green method shouldn't beat toString().
Hen
On Thu, Apr 7, 2011 at 2:49 AM, Julien Aymé <ju...@gmail.com> wrote:
> Hi,
>
> I think that for char[] based implementation of CharSequence (mainly
> StringBuffer/StringBuilder),
> it would be faster to convert to String (copy char[] once) then invoke
> to charArray method (copy char[] twice).
>
> Indeed, invoking many times charAt(index) may be costly since the
> range check would be done every time,
> and the operations (affect char in char[]) would be done as many time
> as the CharSequence length.
>
> But I may be wrong on this one (with jit optimization magic).
>
> Anyway, thanks for the work on Lang3.
>
> Regards,
> Julien
>
> 2011/4/7 <ba...@apache.org>:
>> Author: bayard
>> Date: Thu Apr 7 04:03:55 2011
>> New Revision: 1089724
>>
>> URL: http://svn.apache.org/viewvc?rev=1089724&view=rev
>> Log:
>> Implemented the native CharSequence version of toCharArray
>>
>> Modified:
>> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
>>
>> Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
>> URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java?rev=1089724&r1=1089723&r2=1089724&view=diff
>> ==============================================================================
>> --- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java (original)
>> +++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java Thu Apr 7 04:03:55 2011
>> @@ -6489,8 +6489,12 @@ public class StringUtils {
>> if (cs instanceof String) {
>> return ((String) cs).toCharArray();
>> } else {
>> - // TODO: Implement rather than convert to String
>> - return cs.toString().toCharArray();
>> + int sz = cs.length();
>> + char[] array = new char[cs.length()];
>> + for (int i=0; i < sz; i++) {
>> + array[i] = cs.charAt(i);
>> + }
>> + return array;
>> }
>> }
>>
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: svn commit: r1089724 - /commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
Posted by Julien Aymé <ju...@gmail.com>.
Hi,
I think that for char[] based implementation of CharSequence (mainly
StringBuffer/StringBuilder),
it would be faster to convert to String (copy char[] once) then invoke
to charArray method (copy char[] twice).
Indeed, invoking many times charAt(index) may be costly since the
range check would be done every time,
and the operations (affect char in char[]) would be done as many time
as the CharSequence length.
But I may be wrong on this one (with jit optimization magic).
Anyway, thanks for the work on Lang3.
Regards,
Julien
2011/4/7 <ba...@apache.org>:
> Author: bayard
> Date: Thu Apr 7 04:03:55 2011
> New Revision: 1089724
>
> URL: http://svn.apache.org/viewvc?rev=1089724&view=rev
> Log:
> Implemented the native CharSequence version of toCharArray
>
> Modified:
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
>
> Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
> URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java?rev=1089724&r1=1089723&r2=1089724&view=diff
> ==============================================================================
> --- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java (original)
> +++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java Thu Apr 7 04:03:55 2011
> @@ -6489,8 +6489,12 @@ public class StringUtils {
> if (cs instanceof String) {
> return ((String) cs).toCharArray();
> } else {
> - // TODO: Implement rather than convert to String
> - return cs.toString().toCharArray();
> + int sz = cs.length();
> + char[] array = new char[cs.length()];
> + for (int i=0; i < sz; i++) {
> + array[i] = cs.charAt(i);
> + }
> + return array;
> }
> }
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org