C# 从资产解析流的性能很差

C# 从资产解析流的性能很差,c#,xamarin.forms,C#,Xamarin.forms,我正在使用android AssetManager从设备读取资产,并尝试在应用程序中解析它们。问题是,与流的大小相比,单个资产的解析需要很长的时间(~10秒)。我有3个作为资产包含的文件,它们的大小从1.6MB到2.2MB,解析时间应该更短 阅读资产: AssetManager=this.Assets; 流[]资产=新流[] { 经理公开(“arial.fta”), 经理公开(“consolas.fta”), 经理公开(“comicsans.fta”) }; 正在分析流: BinaryRead

我正在使用android AssetManager从设备读取资产,并尝试在应用程序中解析它们。问题是,与流的大小相比,单个资产的解析需要很长的时间(~10秒)。我有3个作为资产包含的文件,它们的大小从1.6MB到2.2MB,解析时间应该更短

阅读资产:

AssetManager=this.Assets;
流[]资产=新流[]
{
经理公开(“arial.fta”),
经理公开(“consolas.fta”),
经理公开(“comicsans.fta”)
};
正在分析流:

BinaryReader=新的BinaryReader(资产[0]);
int width=reader.ReadInt32();
int height=reader.ReadInt32();
对于(int y=0;y
解析时的控制台日志:(持续10秒)

如果有人能帮助我提高绩效,我会非常高兴


旁注:无法设置stream.Position,并且总是抛出错误(System.NotSupportedException)。有人知道为什么会发生这种情况吗

一个资产中有大约600000个像素?你认为需要多长时间?删除两个
ReadByte()
方法,看看会发生什么。是的,你可能是对的,我会尽量减少流需要访问的量。我以前在windows上运行过,只花了大约60毫秒,我希望不会比现在长166倍,但硬件差异可能比我想象的要大。感谢您在一项资产中使用了600000像素?你认为需要多长时间?删除两个
ReadByte()
方法,看看会发生什么。是的,你可能是对的,我会尽量减少流需要访问的量。我以前在windows上运行过,只花了大约60毫秒,我希望不会比现在长166倍,但硬件差异可能比我想象的要大。谢谢
06-08 13:20:02.920 D/Mono    (26245): GC_TAR_BRIDGE bridges 12 objects 18 opaque 2 colors 12 colors-bridged 12 colors-visible 12 xref 0 cache-hit 0 cache-semihit 0 cache-miss 0 setup 0.08ms tarjan 0.08ms scc-setup 0.08ms gather-xref 0.07ms xref-setup 0.07ms cleanup 0.08ms
06-08 13:20:02.920 D/Mono    (26245): GC_BRIDGE: Complete, was running for 11.05ms
06-08 13:20:02.920 D/Mono    (26245): GC_MINOR: (Nursery full) time 2.93ms, stw 6.51ms promoted 163K major size: 848K in use: 224K los size: 3204K in use: 2231K
06-08 13:20:03.964 D/Mono    (26245): GC_TAR_BRIDGE bridges 0 objects 0 opaque 0 colors 0 colors-bridged 0 colors-visible 12 xref 0 cache-hit 0 cache-semihit 0 cache-miss 0 setup 0.08ms tarjan 0.08ms scc-setup 0.08ms gather-xref 0.07ms xref-setup 0.07ms cleanup 0.06ms
06-08 13:20:03.965 D/Mono    (26245): GC_BRIDGE: Complete, was running for 0.55ms
...