Math.Sqrt是否缓存自己的结果?

时间:2010-06-16 14:22:19

标签: c#-4.0

有人向我建议.NET 4.0中内置的C#Math.Sqrt函数会缓存其结果,这样如果我一遍又一遍地调用Math.Sqrt(50),它实际上并不是在做一个sqrt,而是只是从缓存中提取答案。任何人都可以验证或否认这种说法吗?如果它是真的那么我在我的代码中有一堆不必要的缓存。

2 个答案:

答案 0 :(得分:1)

我不相信。

您可以尝试做一个基准测试,在1000.000个不同的数字上调用Math.Sqrt,然后在1000.000个相同的数字上调用,所用的时间应该相似。

您可以查看反射器,它会显示Math.Sqrt功能代码(至少是非托管部分)。

如果您需要缓存,则应使用某种哈希表自行创建缓存。 请注意,您应该留下一个epsilon,例如1.0000000应该被视为与1.00000001相同,否则您会遇到准确性问题。

答案 1 :(得分:0)

我没有安装.net 4,但你可以通过在反射器中查看上述方法来轻松搞清楚这一点 这是你能确定看到发生了什么的唯一方法。