图像加载的性能

我已经尝试了几个小时,用各种方法从文件加载图像。 请看看这两种方法:

public Image SlowLoad(string path) { return Image.FromFile(path); } public Image FastLoad(string path) { using (MemoryStream ms = new MemoryStream(File.ReadAllBytes(path))) return Image.FromStream(ms); } 

第二种方法比2倍快。 我在这里想念的是什么? 为什么会这样? 我简直不能相信.NET开发人员无法使用我编写的方法更快地实现Image.FromFile。 所以=>我错了。 请告诉我在哪里。 为什么第二种方法快2倍? 我的代码完全正确吗? (线程安全等)。 也许Image.FromFile更安全?

AFAIK:首先,Image.FromFile包含GDI + GdipLoadImageFromFile *函数,其中有一个奇怪的生命。 GDI +图像保存并可以在整个生命周期中使用源 (文件或流),有关它的一些细节http://support.microsoft.com/en-us/kb/814675 。 所以,这里有一些可能的“多文件io”vs“多流io”。 MS Reference Source System.Drawing.Image中也有一些有趣的评论:

http://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Image.cs,181

 class Image { ............ public static Image FromFile(String filename, bool useEmbeddedColorManagement) { ............ //GDI+ will read this file multiple times. ............ } }