gpt4 book ai didi

c# - 使C#算法更高效

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:58 24 4
gpt4 key购买 nike

我有一个 C# 方法,可以将一个数字的值从一个区间转换到一个目标区间。
例如:我们有-1000和9000的区间,值为5000;如果我们想将该值投影到 0..100 的区间,我们将得到 60。

方法如下:

/// <summary>  
/// Projects a value to an interval
/// </summary>
/// <param name="val">The value that needs to be projected</param>
/// <param name="min">The minimum of the interval the value comes from</param>
/// <param name="max">The maximum of the interval the value comes from</param>
/// <param name="intervalTop">The minimum of the interval the value will
/// be projected to</param>
/// <param name="intervalBottom">The maximum of the interval the value will
/// be projected to</param>
/// <returns>Projected value</returns>
public decimal ProjectValueToInterval(decimal val,
decimal min,
decimal max,
decimal intervalBottom,
decimal intervalTop)
{
decimal newMin = Math.Min(0, min);
decimal valueIntervalSize = Math.Abs(max - newMin);
decimal targetIntervalSize = Math.Abs(intervalTop - intervalBottom);

decimal projectionUnit = targetIntervalSize / valueIntervalSize;

return (val * projectionUnit) + Math.Abs((newMin * projectionUnit));
}

需要为数千个值调用此方法。
我想知道在 C# 中是否有更有效的方法来执行此操作?如果是,您建议进行哪些更改?

最佳答案

只有数千个值?你真的需要进一步优化吗?我无法想象这实际上是目前的瓶颈。您是否对应用进行了概要分析以检查这是否确实是一个问题?

鉴于该方法的复杂度为 O(1),您不会进行通常旨在提高复杂度的最彻底的优化。

话虽如此 - 当您调用它数千次时,是否有任何值保持不变?例如,您是否重复使用相同的最小值和最大值?如果是这样,您可以创建一个类,该类在构造函数中采用这些值并预先计算它可以计算的值,然后有一个方法采用其余参数。这会稍微改善一些情况,但我回到我原来的观点 - 只有在它确实导致问题时才担心它。

关于c# - 使C#算法更高效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/340090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com