mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[csharp] SkeletonBinary: Optimization of ReadFloat and ReadInt performance, overall ~10% performance gain. Closes #1698.
This commit is contained in:
parent
eadce3188c
commit
a7e2c9d52a
@ -883,6 +883,7 @@ namespace Spine {
|
|||||||
|
|
||||||
internal class SkeletonInput {
|
internal class SkeletonInput {
|
||||||
private byte[] chars = new byte[32];
|
private byte[] chars = new byte[32];
|
||||||
|
private byte[] bytesBigEndian = new byte[4];
|
||||||
internal ExposedList<String> strings;
|
internal ExposedList<String> strings;
|
||||||
Stream input;
|
Stream input;
|
||||||
|
|
||||||
@ -905,15 +906,20 @@ namespace Spine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public float ReadFloat () {
|
public float ReadFloat () {
|
||||||
chars[3] = (byte)input.ReadByte();
|
input.Read(bytesBigEndian, 0, 4);
|
||||||
chars[2] = (byte)input.ReadByte();
|
chars[3] = bytesBigEndian[0];
|
||||||
chars[1] = (byte)input.ReadByte();
|
chars[2] = bytesBigEndian[1];
|
||||||
chars[0] = (byte)input.ReadByte();
|
chars[1] = bytesBigEndian[2];
|
||||||
|
chars[0] = bytesBigEndian[3];
|
||||||
return BitConverter.ToSingle(chars, 0);
|
return BitConverter.ToSingle(chars, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int ReadInt () {
|
public int ReadInt () {
|
||||||
return (input.ReadByte() << 24) + (input.ReadByte() << 16) + (input.ReadByte() << 8) + input.ReadByte();
|
input.Read(bytesBigEndian, 0, 4);
|
||||||
|
return (bytesBigEndian[0] << 24)
|
||||||
|
+ (bytesBigEndian[1] << 16)
|
||||||
|
+ (bytesBigEndian[2] << 8)
|
||||||
|
+ bytesBigEndian[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
public int ReadInt (bool optimizePositive) {
|
public int ReadInt (bool optimizePositive) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user