|
1
2
在生成本机代码时,C++/CLI编译器支持与微软的本机C++编译器相同的优化。 当生成MSIL时,C++/CLI编译器支持较少数量的优化(但仍多于C *),然后在JIT中发生另一优化传递(相同的JIT和相同的JIT时间优化,适用于C *)。 例如,在生成MSIL时可以展开循环,但不能自动矢量化,因为MSIL没有SIMD指令。矢量化在理论上仍然可以由JIT完成,但在实践中,JIT的资源约束意味着优化的效率较低。 此外,由于语言设计,C++可能存在一些优化,但不能进行C语言优化。例如,为模板参数的每个组合编译C++模板(包括C++ + CLI),而.NET泛型(包括在C语言中和C++ +CLI中)仅基于通用约束完全解决。 |
|
2
4
在发布版本中,C++/CLI代码总是优化的,是的。关键是谁,你可以随心所欲地混合。如果将太多的本机C++代码编译成非二进制代码,这往往会出错。很难注意到,代码生成器可以处理任何兼容的C++ 03代码,很少对任何C++ 1x咒语进行尖叫。 一个很好的提醒,抖动与C++编译器的后端没有太大的不同。比如说,MSIL与LLVM所需的IR相当好。MSVC++编译器对本机代码使用的IR未被记录和不可见。 这使得在自己的静态库或DLL中隔离本机C++包是一个很好的做法。但是,在函数级别上进行混合是可能的,可以用γ-语用/非管理方式来回切换。 所以很像你猜的那样,#pragma unmanaged代码得到了优化器的完全喜爱,而#pragma managed在运行时通过抖动得到了优化。您可以在 this post . |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
|
Daniel Lobo · 使用约束进行优化 1 年前 |
|
Sergio · python中大量数字的乘法 2 年前 |
|
|
Sergey Dev · 临时表与表变量 2 年前 |
|
|
John · 减少C中的内存消耗++ 2 年前 |