mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 07:14:55 +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 {
|
||||
private byte[] chars = new byte[32];
|
||||
private byte[] bytesBigEndian = new byte[4];
|
||||
internal ExposedList<String> strings;
|
||||
Stream input;
|
||||
|
||||
@ -905,15 +906,20 @@ namespace Spine {
|
||||
}
|
||||
|
||||
public float ReadFloat () {
|
||||
chars[3] = (byte)input.ReadByte();
|
||||
chars[2] = (byte)input.ReadByte();
|
||||
chars[1] = (byte)input.ReadByte();
|
||||
chars[0] = (byte)input.ReadByte();
|
||||
input.Read(bytesBigEndian, 0, 4);
|
||||
chars[3] = bytesBigEndian[0];
|
||||
chars[2] = bytesBigEndian[1];
|
||||
chars[1] = bytesBigEndian[2];
|
||||
chars[0] = bytesBigEndian[3];
|
||||
return BitConverter.ToSingle(chars, 0);
|
||||
}
|
||||
|
||||
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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user