为什么一些大型项目编译成小型程序集?

时间:2016-06-09 13:16:54

标签: c# .net

例如,着名的库HtmlAgilityPack源的最后一个版本就像110 000行C#,汇编为132 KB。

https://www.openhub.net/p/htmlagilitypack

我的项目大约有6500行,编译为300 KB汇编。

我没有广泛关注源代码,但显然不是100K loc可用类。那么大量的代码在做什么呢?

2 个答案:

答案 0 :(得分:3)

除了调试与发布模式等差异之外,我怀疑将6,500行与其源中的“110,000”行进行比较会产生误导。

代码行是一个古怪的指标。如果查看breakdown by language,您会发现C#中只有大约55个KLOC用于所有项目(其中只有一个是实际的Agility Pack程序集),其中大部分是(我怀疑)大括号和其他没有直接的“空白”在二进制文件中表示。此外,只是浏览它,它不会使用许多自动实现的属性,这些属性使用较少的代码行来实现相同的功能。例如:

Beverage

Decorator

12行代码与1 代码相同的编译代码

所有这一切都表明,使用代码行作为程序“大小”的指标有很多警告。

答案 1 :(得分:-2)

它可能来自您代码中的调试信息。如果您进行系统库调用(减小大小)或使用大量自己编写的库,这也取决于它。