不是,举个例子:
当C#开发序列化库的时候,需要获取传入类型。最开始实现方式是反射,但是这个很慢。
后来有优化方式改成了动态代码生成,第一次调用的时候生成il代码。这种方法性能好,但问题是动态代码生成在unity和ios上是无法使用的。
现在解决办法,是编译的时候先编译一遍,序列化库拿到exe项目完整语法树,然后针对要序列化的类型生成cs文件,然后再带上新cs文件整体编译一次
这样的好处是开发难度很低,出错信息明确。
性能也还说的过去,至少比模板快,彻底解决了cpp用模板搞元编程带来的一堆问题。
对于这种方法,c#这边没有完成100%也完成95%了。关键词是fody,和roslyn compiler as a service
【 在 ArchLinux 的大作中提到: 】
: LTO算是你说的二次编译吗?
:
--
FROM 123.116.196.*