0

ネットワーク上の場所にある XML ファイルから映画のリストを読み取る WPF アプリケーションを作成しました。起動が遅い原因を調査し始めたところ、XmlSerializer には多くのオーバーヘッドがあることがわかりました。

プロジェクトを公開する前に、sgen を使用してアセンブリをビルドしましたが、現在、より良い解決策を検討しています。BinaryFormatter クラスを見てきましたが、XML ファイルは Linux サーバー上で実行されている PHP スクリプトによって作成されています。

XML ファイル リーダーを使用して自分でファイルをループする方がよいでしょうか、それともより良いオプションがありますか? 私はスピードを目指しているので、私の XmlSerializer を置き換える提案は大歓迎です。

ファイルを逆シリアル化するためのコードを次に示します。

    public List<Movie> DeSerializeXmlObject(string filename)
    {
        List<Movie> movies;
        Stream stream = File.Open(filename, FileMode.Open);
        XmlSerializer s = new XmlSerializer(typeof(List<Movie>));
        movies = (List<Movie>)s.Deserialize(stream);
        stream.Close();
        return movies;
    }

ファイルの添付方法がわからなかったので、XML ファイルをペーストビンに貼り付けました。http://pastebin.com/Rxsy0R3c ありがとうベン

4

1 に答える 1

0

何か間違ったことをしている可能性が高いです。1MBのxmlでさえ解析するのに1秒もかかりません。解析しようとしているXMLファイルを使用してシリアル化および逆シリアル化コードを投稿していただけませんか。

編集:申し訳ありませんが、私はあなたを助けることができないと思います。コードとファイルは問題ないようです。私が今見ている唯一のオプションは、このファイルをバックグラウンドワーカーに遅延ロードしてから、ムービーをGUIスレッドに戻すことです。

于 2010-10-23T11:13:46.813 に答える