JPEGの読み書き

@IT会議室ネタから。JPEGファイルを読み込んでサムネイルを作るという話で、.NETのJPEGの読み込みが遅い気がしたのでMonoで実験してみました。対象は30ファイルのJPEG画像(10MB程度)。

using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;

public class Program {
    public static void Main () {
        string path = Environment.GetFolderPath (
                Environment.SpecialFolder.MyPictures);
        string[] files = Directory.GetFiles (path, "*.jpg");
        DateTime t = DateTime.Now;
        foreach (string s in files) {
            using (Image img = Image.FromFile (s)) {
                img.Save ( 
                        Path.Combine (
                            Path.GetDirectoryName (s), "_" + 
                            Path.GetFileNameWithoutExtension (s)) + ".jpg", 
                        ImageFormat.Jpeg);
                Console.WriteLine (s);
            }
        }
        Console.WriteLine (DateTime.Now - t);
    }
}

/*
[Read]
.NET : 3.5s
Mono : 0.17s

[Read & Write:
.NET : 6.0s
Mono : 2.6s
 */

読み込みが速すぎるのは謎ですが、書き込みも速いのでJPEGに関してはMonoのライブラリが高速なようです。(というか.NETが遅い?)