1

SGEN 生成的 .XmlSerializers.dll 程序集是否可以嵌入到最终的可执行文件中,并且仍然可以运行并提供性能提升?

4

1 回答 1

0

我认为 dll 本身不会对性能造成影响。无论如何,只要通过 AssemblyResolve 需要,该 dll 就会被加载到内存中。

之后,无论是在磁盘上找到dll还是从exe中抓取dll,由于dll是在内存中的,因此应该没有任何性能差异。

您可以按照此处stackoverflow 答案中提供的指令将 dll 嵌入到您的项目中。

至于性能,您可以使用秒表,创建一个循环,在其中对元素进行 X 次序列化和反序列化,然后使用 2 种方法(一种使用磁盘上的 dll,一种使用嵌入的 dll)测量执行时间以确认或否认这个答案的合理性。

using System;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main(string[] args)
{
    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();
    Thread.Sleep(10000);
    stopWatch.Stop();
    // Get the elapsed time as a TimeSpan value.
    TimeSpan ts = stopWatch.Elapsed;

    // Format and display the TimeSpan value. 
    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
        ts.Hours, ts.Minutes, ts.Seconds,
        ts.Milliseconds / 10);
    Console.WriteLine("RunTime " + elapsedTime);
    }
}

上面秒表示例的来源:msdn

于 2015-06-21T19:04:49.590 回答