Performance tweak to FlatBufferBuilder.CreateString method to remove the unnecessary...
authorOli Wilkinson <oli@evolutional.co.uk>
Fri, 11 Dec 2015 19:57:59 +0000 (14:57 -0500)
committerOli Wilkinson <oli@evolutional.co.uk>
Fri, 11 Dec 2015 19:57:59 +0000 (14:57 -0500)
(See https://github.com/google/flatbuffers/issues/55#issuecomment-164031718 for stats)

net/FlatBuffers/FlatBufferBuilder.cs

index 3866d83..5230b32 100644 (file)
@@ -276,12 +276,11 @@ namespace FlatBuffers
 
         public StringOffset CreateString(string s)
         {
-            NotNested();
-            byte[] utf8 = Encoding.UTF8.GetBytes(s);
-            AddByte((byte)0);
-            StartVector(1, utf8.Length, 1);
-            Buffer.BlockCopy(utf8, 0, _bb.Data, _space -= utf8.Length,
-                             utf8.Length);
+            NotNested();            
+            AddByte(0);
+            var utf8StringLen = Encoding.UTF8.GetByteCount(s);
+            StartVector(1, utf8StringLen, 1);
+            Encoding.UTF8.GetBytes(s, 0, s.Length, _bb.Data, _space -= utf8StringLen);
             return new StringOffset(EndVector().Value);
         }