![]() |
1
63
简单的回答是,“使用可接受结果所需的精度。” 一个保证是对浮点数据执行的操作至少在表达式的最高精度成员中完成。所以乘以2 浮动 浮动 ,并乘以a 和 将以至少两倍的精度完成。该标准规定“[浮点]运算的执行精度可能高于运算的结果类型。” 鉴于.NET的JIT试图将浮点运算保持在所要求的精度,我们可以看看Intel提供的加速运算的文档。在英特尔平台上,浮点运算可以在80位的中间精度下完成,并转换为所需的精度。 从英特尔指南到C++浮点运算 1.
最后一点同样重要 you can slow yourself down with unnecessary casts to/from float and double ,这导致JIT代码要求x87在操作之间放弃其80位中间格式! 1.是的,它表示C++,但是C语言标准加上CLR的知识让我们知道C++中的信息应该适用于这个例子。 |
![]() |
2
21
我刚刚阅读了《MCSS考试75-536》的“微软.NETFramework应用程序开发基础第二”,第4页(第1章)有一个注释:
这是托尼·诺斯鲁普写的。我不知道他是否是权威,但我认为.NET考试的官方书籍应该有一定的分量。这当然不是一个高兰蒂。我只是想把它加入讨论。 |
![]() |
3
19
几周前,我提出了一个类似的问题。底线是,对于x86硬件,浮点与双倍的性能没有显著差异,除非内存受限,或者开始遇到缓存问题。在这种情况下,浮动通常具有优势,因为它们较小。 当前的Intel CPU在80位宽的寄存器中执行所有浮点运算,因此实际计算速度不应在浮点和双精度之间变化。 |
![]() |
4
7
还有人提到避免浮动和浮动之间的转换;double和使用这两种类型的操作数的计算。这是一个很好的建议,如果您使用任何返回双精度的数学库函数(例如),那么将所有内容保持为双精度将更快。 |
![]() |
5
7
我正在编写一个光线跟踪器,将颜色类中的浮动替换为双浮动,可以使我的速度提高5%。将矢量浮动替换为双精度浮动又快了5%!很酷:) 它的核心是i7920 |
![]() |
6
4
对于387 FPU算法,对于某些长迭代操作,如pow、log等,浮点运算的速度仅比double快(并且只有在编译器适当设置FPU控制字的情况下)。
|
![]() |
7
3
你错了。在现代处理器中,32位的效率远远高于16位。。。也许不是内存方面的问题,但在有效性方面,32位是最好的选择。 你真的应该让你的教授更新到更“最新”的东西 无论如何,回答这个问题;float和double具有完全相同的性能,至少在我的英特尔i7 870上是如此(理论上)。 以下是我的尺寸:
|
![]() |
8
2
我一直认为,无论是浮点还是双精度,处理器都是经过优化或相同的。在我密集的计算中寻找优化(从一个矩阵中获取大量数据,比较两个值),我发现浮点运算速度快了13%。 这让我很惊讶,但我想这是因为我的问题的本质。在运算的核心部分,我不会在float和double之间进行转换,我的计算主要是加法、乘法和减法。
|
![]() |
9
1
这表明浮点数略快于双倍点数: http://www.herongyang.com/cs_b/performance.html 一般来说,在对性能进行比较时,应该考虑任何特殊情况,例如使用一种类型是否需要额外的转换或数据处理?这些加起来可以掩盖像这样的通用基准。 |
![]() |
10
1
在32位系统上,浮点运算应该更快,但要对代码进行分析,以确保优化的内容正确。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |