【发布时间】:2017-10-20 02:37:01
【问题描述】:
假设我有一个List<DateTime> L,其中包含美国的假期日期。让DateTime d 成为今天 2017/10/19。我想计算与d 连续的下一个第n 个非假日日期(假设n 是一个正整数)。
为此,涉及“迭代所有日期>= d,但属于L 的日期除外”的概念。处理这个问题的最佳 C# 设计是什么? (性能很重要。)
备注:
- 在“迭代”过程中的每个非节假日,我都会使用当前的非节假日来进行计算
-
n可能是“365”的 40-50 倍 - 假期日期的集合确实是有限的,我不使用由生成规则定义的假期日历
- 我也有兴趣创建直到“
d+n”的“迭代”非节假日列表,或两个日期之间的非节假日列表
【问题讨论】:
-
这与您的标题“迭代值优于某些值”有何联系?
-
除了;马上改正
-
“性能很重要”毫无意义;正确性也很重要,可维护性、健壮性、易读性、可本地化和其他一千件事也很重要。如果您有理由相信计算日期的成本会影响项目的成败,那么请说出您的绩效预算是多少,您已经尝试过什么,以及如何它不符合您的经验表现标准。
-
@EricLippert 你看,“性能非常重要”不仅仅是一句话。它是:“处理这个问题的最佳 c# 设计是什么?(性能非常重要。)”这意味着:“什么是最好的 c# 设计也可以处理性能。”而“最佳 C# 设计”包括正确性、可维护性、稳健性、易读性、可本地化和其他一千种东西。谢谢。
-
@ujsgeyrr1f0d0d0r0h1h0j0j_juj:“这也可以照顾性能”虽然仍然模棱两可。通常,代码的简单性和优化是紧张的。您需要这样如何高效?例如,如果您需要一种根本不执行任何堆分配的方法,那么这可能会更加复杂 - 损害易读性等。我提供了我认为“合理有效”的方法,但无论他们'再足够有效是另一回事。