Commit 2ce5d6c2 authored by Wouter van Oortmerssen's avatar Wouter van Oortmerssen

Merge pull request #2090 from evolutional/cs-perf-string

C# - Performance optimizations
parents 4dcaec79 be11d2b6
...@@ -146,6 +146,13 @@ namespace FlatBuffers ...@@ -146,6 +146,13 @@ namespace FlatBuffers
_buffer[offset] = value; _buffer[offset] = value;
} }
public void PutByte(int offset, byte value, int count)
{
AssertOffsetAndLength(offset, sizeof(byte) * count);
for (var i = 0; i < count; ++i)
_buffer[offset + i] = value;
}
// this method exists in order to conform with Java ByteBuffer standards // this method exists in order to conform with Java ByteBuffer standards
public void Put(int offset, byte value) public void Put(int offset, byte value)
{ {
......
...@@ -69,10 +69,7 @@ namespace FlatBuffers ...@@ -69,10 +69,7 @@ namespace FlatBuffers
public void Pad(int size) public void Pad(int size)
{ {
for (var i = 0; i < size; i++) _bb.PutByte(_space -= size, 0, size);
{
_bb.PutByte(--_space, 0);
}
} }
// Doubles the size of the ByteBuffer, and copies the old data towards // Doubles the size of the ByteBuffer, and copies the old data towards
...@@ -116,6 +113,7 @@ namespace FlatBuffers ...@@ -116,6 +113,7 @@ namespace FlatBuffers
_space += (int)_bb.Length - oldBufSize; _space += (int)_bb.Length - oldBufSize;
} }
if (alignSize > 0)
Pad(alignSize); Pad(alignSize);
} }
...@@ -277,11 +275,10 @@ namespace FlatBuffers ...@@ -277,11 +275,10 @@ namespace FlatBuffers
public StringOffset CreateString(string s) public StringOffset CreateString(string s)
{ {
NotNested(); NotNested();
byte[] utf8 = Encoding.UTF8.GetBytes(s); AddByte(0);
AddByte((byte)0); var utf8StringLen = Encoding.UTF8.GetByteCount(s);
StartVector(1, utf8.Length, 1); StartVector(1, utf8StringLen, 1);
Buffer.BlockCopy(utf8, 0, _bb.Data, _space -= utf8.Length, Encoding.UTF8.GetBytes(s, 0, s.Length, _bb.Data, _space -= utf8StringLen);
utf8.Length);
return new StringOffset(EndVector().Value); return new StringOffset(EndVector().Value);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment