如果说速度快,那么马上。 净投入和产出的最高限额相当缓慢。 最快的是线性表达。 2.4 秒
警告:只有正面的<代码> 价值和divisor
数值。
www.un.org/Depts/DGACM/index_french.htm
我来到这里,C/C++显然也发现了这一点。 此前的发展者:
var ceilingResult = (value / divisor) + (value % divisor == 0 ? 0 : 1);
根据我自己的10M频率基准,Math。 最高限额为2.4秒。 在指定职能中要求这种表达方式,需要约380个ms,并将其作为直线表达方式。
<>B> 简单的算术只有
还考虑使用@mafu的建议
var ceilingResult = (value + divisor - 1) / divisor;
见https://stackoverflow.com/a/2745086/887092>。 编号C++回答,以供参考和验证。 >。
<>C> DivRem
https://stackoverflow.com/a/148734/887092“https://stackoverflow.com/a/148734/887092。 我注意到,有人提醒我注意万国邮联的指示。 见https://learn.microsoft.com/en-us/dotnet/api/system.math.divrem?view=netframework-4.8 。 <代码>Math.DivRemshould<>em> > 后经正式决定加入《万国邮联指令》。
var quotient = Math.DivRem(value, divisor, out long remainder);
var ceilingResult = quotient + (remainder == 0 ? 0 : 1);
[我尚未测试这一点]。 See https://stackoverflow.com/a/924160/887092 。 (在使用负印数的情况下)
Further optimisations might be possible for this - maybe with casting. In this answer, https://stackoverflow.com/a/924160/887092, an if-conditional statement is used - they are about the same.
执行情况:
- Modulus: Has two operations that are added, but also a conditional branch.
- Arithmetic: Has some additional mathematical operations in a sequence.
- DivRem: Builds on the Modulus approach. If C# does resolve Math.DivRem to a single CPU instruction, this might be faster. Further optimisations might also be possible.
我不敢肯定这两者如何在各种结构中发挥作用。 但是,现在你们有探索的选择。
如果你想读物的话。 地面 投入和产出更加容易:
var floorResult = (value / divisor);