相关疑难解决方法(0)

我可以给编译器/ JIT提供哪些优化提示?

我已经介绍过了,现在我正在寻找可以从我的热点中挤出一切可能的性能.

我知道[MethodImplOptions.AggressiveInlining]ProfileOptimization类.还有其他人吗?


[编辑] 我刚刚发现了[TargetedPatchingOptOut].没关系,显然不需要一个.

.net c# vb.net optimization

32
推荐指数
2
解决办法
3524
查看次数

MethodImplOptions.AggressiveInlining与TargetedPatchingOptOut

MethodImplAttribute与选项MethodImplOptions.AggressiveInliningTargetedPatchingOptOut?之间有什么区别?

当我在Google上搜索时,每个人似乎都说(可能)内联方法但没有给出差异.

.net c# jit inline ngen

24
推荐指数
1
解决办法
9766
查看次数

跨组件的本机映像的内联方法

正如在另一个问题中所解释的,如果方法设置了TargetedPatchingOptOutAttribute,则通常只允许Ngen跨组件内联方法.

但是,通过使用DependencyAttribute,对于硬绑定程序集也是如此吗?LoadHint.Always

编辑:也许我的初始问题的答案是否定的,否则TargetedPatchingOptOutAttribute在mscorlib中使用它是没有意义的,因为这个程序集总是硬绑定(它设置了DefaultDependencyAttribute).所以我想重新解释一下我的问题:是否可以在TargetedPatchingOptOutAttribute组件的原生图像中内联方法?

.net ngen .net-assembly

18
推荐指数
1
解决办法
3318
查看次数

为什么 MarkupExtension 是 wpf 中的类

MarkupExtension 类的反编译如下所示:

[TypeForwardedFrom("WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")]
public abstract class MarkupExtension
{
    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    protected MarkupExtension()
    {
    }

    public abstract object ProvideValue(IServiceProvider serviceProvider);
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它本来可以作为接口实现,但它是一个类。WPF 团队为什么要这样设计?而且,在Silverlight中它是一个接口

c# wpf xaml markup-extensions

5
推荐指数
1
解决办法
416
查看次数

只有一行的方法会达到性能?

在代码中定义了ValidateRequest方法

    private bool ValidateRequest()
    {
        return _doc != null;
    }
Run Code Online (Sandbox Code Playgroud)

从我想要检查_doc是否为null的所有地方调用此方法.此方法已在cs文件中使用了5次.

从性能的角度来看,建议只用一条线来定义一个方法是明智的吗?我认为在调用这个方法之前,所有来自被调用的东西都会被推到堆栈上,之后它会被从堆栈中拉出来.

有什么想法吗?

===编辑====

我使用的是.NET 3.5版

.net c# optimization performance

3
推荐指数
3
解决办法
1286
查看次数