可以嵌入.XmlSerializers.dll程序集吗?

时间:2013-11-06 08:30:03

标签: c# .net vb.net xml-serialization sgen

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

1 个答案:

答案 0 :(得分:0)

我认为dll本身不会有性能损失。 无论如何,只要需要通过AssemblyResolve,dll就会被加载到内存中。

之后,无论是在磁盘上找到dll还是从exe中获取dll,因为dll在内存中,所以应该没有任何性能差异。

您可以按照此stackoverflow answer here上提供的指令将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