【问题标题】:Using pragma intrinsic(sqrt, pow) in C#?在 C# 中使用编译指示内在(sqrt,pow)?
【发布时间】:2011-09-28 12:03:58
【问题描述】:

C++ 总结

在代码的预处理器部分使用#pragma intrinsic 命令将大大提高大多数数学函数调用的速度。

#pragma intrinsic(sqrt, pow)

上述代码允许将大多数数学函数调用直接发送到数学协处理器,而不是发送到函数堆栈。

问题

有没有办法在 C# 中做到这一点?除了重写内置函数来做类似的事情。例如,通常做二的幂,所以这是合适的,但这不是我要找的:

public double Pow2(double value)
{
    return (value * value);
}

【问题讨论】:

    标签: c# c++ c-preprocessor intrinsics pragma


    【解决方案1】:

    C# 不需要“#pragma intrinsic”,因为:

    Accessing math coprocessor from C#

    JIT 编译器知道数学协处理器并将使用它。

    【讨论】:

    • This was part of the promise of JIT-compilation, ..., but I don't think .NET actually does that, at least in v4.
    • @Dark:你在断章取义地引用我的话。那一点是在谈论 SIMD 的使用。
    • 你对,我的错。没看到那个。那么如果我想加快我的代码速度,什么是可行的替代品呢?
    • 没有什么能阻止 .NET 将 SQRTSDMULSD 指令替换为 Math.Sqrt(x)Math.Pow(x, 2)。不过,我不知道它目前是否这样做。如果您需要这种微优化,C#/.NET 确实不是合适的工具。
    • @Dark:如果有一种通用的方法可以加快数学运算速度,编译器早就在这样做了。剩下的是针对特定问题的优化。首先,您应该使用分析器并找出程序中真正的慢速区域。
    猜你喜欢
    • 1970-01-01
    • 2017-07-14
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多