|
1
19
|
|
|
2
14
哇,那看起来真的很蠢,不是吗?
显然,按照IL汇编语言的设计方式,不可能有一条IL指令产生两个输出并将它们推送到eval堆栈上。鉴于这一限制,您不能在IL汇编程序中使用除法指令来同时计算x86 DIV或IDIV指令。 IL是为安全性、可验证性和稳定性而设计的, 为了表现。任何拥有计算密集型应用程序且主要关注性能的人都将使用本机代码,而不是.NET。
|
|
|
3
13
尽管.NET Framework 4.6.2仍然使用次优的模除运算,.NET核心(CoreCLR) currently 将除法替换为减法:
这两者都有一个悬而未决的问题
improve
|
|
|
4
2
答案可能是没有人认为这是一个优先事项——这已经足够好了。事实上,任何新版本的.NET Framework都没有解决这一问题,这表明这种情况很少被使用——很可能从来没有人抱怨过。 |
|
|
5
2
|
|
|
6
1
FWIW,我正在运行Intel Core 2 Duo。
在发布版本中:
|
|
|
7
1
效率很可能取决于所涉及的数量。您正在测试可用问题空间的一小部分,并且所有问题都是前置的。您正在检查前100万*10=10亿个连续输入组合,但实际问题空间约为42亿平方,或1.8e19个组合。 像这样的一般库数学运算的性能需要在整个问题空间中分摊。我想看看更规范化的输入分布的结果。 |
|
|
8
0
至于它存在的原因,我猜它的存在部分是为了完整性,部分是为了其他语言的好处,这些语言可能不具备易于使用的整数除法和模计算实现。 |
|
|
9
0
下面是一些C#用法
以下是相应的IL:
注意
2.
呼叫
|
|
|
10
0
试验略有改变;我在返回值中添加了赋值,并且正在运行发布版本。
意见: 您似乎找到了一个很好的优化;) |
|
11
-3
|
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
|
Daniel Lobo · 使用约束进行优化 1 年前 |
|
Sergio · python中大量数字的乘法 2 年前 |
|
|
Sergey Dev · 临时表与表变量 2 年前 |
|
|
John · 减少C中的内存消耗++ 2 年前 |