2003-10-24: Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
authorFrancisco Figueiredo Jr. <fxjr@mono-cvs.ximian.com>
Fri, 24 Oct 2003 16:33:49 +0000 (16:33 -0000)
committerFrancisco Figueiredo Jr. <fxjr@mono-cvs.ximian.com>
Fri, 24 Oct 2003 16:33:49 +0000 (16:33 -0000)
* Better performance implementation of the method which converts a byte[] to a bytea string. Thanks Jackson Harper (jackson at ximian dot com)

svn path=/trunk/mcs/; revision=19362

mcs/class/Npgsql/NpgsqlTypes/NpgsqlTypesHelper.cs

index 18db767b769675d5a15bbc852f12a3c842d17567..0d63fcadccf9112e233fa28be0b08e0172ee6b73 100755 (executable)
@@ -483,20 +483,20 @@ namespace NpgsqlTypes
        
        private static String ConvertByteArrayToBytea(Byte[] byteArray)
        {
-        NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "ConvertByteArrayToBytea");
-               StringBuilder  result = new StringBuilder("");          
-  
-               foreach(Byte byteToConvert in byteArray)
-               {
-                       result.Append("\\\\");
-                       result.Append((byteToConvert & 0xC0) >> 6);
-                       result.Append((byteToConvert & 0x38) >> 3);
-                       result.Append(byteToConvert & 0x07);
-               }
-  
-               return result.ToString();
-       }       
-               
+               NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, "ConvertByteArrayToBytea");
+               Int32 len = byteArray.Length;
+               Char[] res = new Char [len * 5];
+               for (Int32 i = 0; i <len; i++) 
+               {
+                       res [(i*5)] = '\\';
+                       res [(i*5)+1] = '\\';
+                       res [(i*5)+2] = (Char) (((byteArray[i] & 0xC0) >> 6) + '0');
+                       res [(i*5)+3] = (Char) (((byteArray[i] & 0x38) >> 3) + '0');
+                       res [(i*5)+4] = (Char) ((byteArray[i] & 0x07) + '0');
+               }
+
+               return new String (res);
+       
        }
        
 }