Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中使用pragma内在函数(sqrt,pow)?_C#_C++_C Preprocessor_Intrinsics_Pragma - Fatal编程技术网

在C#中使用pragma内在函数(sqrt,pow)?

在C#中使用pragma内在函数(sqrt,pow)?,c#,c++,c-preprocessor,intrinsics,pragma,C#,C++,C Preprocessor,Intrinsics,Pragma,C++摘要 在代码的预处理器部分使用#pragma intrinsic命令将大大提高大多数数学函数调用的速度 #pragma intrinsic(sqrt, pow) 上面的代码允许将大多数数学函数调用直接发送到数学协处理器,而不是发送到函数堆栈 问题 在C#中有什么方法可以做到这一点吗?除了重写内置函数以执行类似操作之外。比如说,做二次幂是很常见的,所以这是合适的,但这不是我想要的: public double Pow2(double value) { return (value *

C++摘要

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

#pragma intrinsic(sqrt, pow)
上面的代码允许将大多数数学函数调用直接发送到数学协处理器,而不是发送到函数堆栈

问题

在C#中有什么方法可以做到这一点吗?除了重写内置函数以执行类似操作之外。比如说,做二次幂是很常见的,所以这是合适的,但这不是我想要的:

public double Pow2(double value)
{
    return (value * value);
}
C#不应该需要“#pragma intrinsic”,因为:

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


这是JIT编译承诺的一部分,…,但我认为.NET实际上并没有做到这一点,至少在v4中是这样。
@Dark:你引用我的话是断章取义的。那个特别的部分是关于SIMD的使用。你说的对,我的错。我没看到。那么,如果我想加速我的代码,那么什么才是可行的替代品呢?没有什么能阻止.NET用
SQRTSD
MULSD
指令代替
Math.Sqrt(x)
Math.Pow(x,2)
。不过,我不知道它目前是否这样做。如果你需要这样的微优化,C#/.NET真的不是合适的工具。@Dark:如果有一种通用的加速数学的方法,编译器可能已经在做了。剩下的是针对特定问题的优化。首先,你应该使用一个分析器,找出你的程序中真正慢的地方是什么。