gpt4 book ai didi

c# - 请求许可或道歉?

转载 作者:太空狗 更新时间:2023-10-29 17:38:22 26 4
gpt4 key购买 nike

我有 Python 背景,人们常说道歉比请求许可更容易。特别给出了两个片段:

if type(A) == int:
do_something(A)
else:
do_something(int(A))

try:
do_something(A)
except TypeError:
do_something(int(A))

然后在大多数使用场景下,当 A 通常是一个整数时,第二个会更快(假设 do_something 需要一个整数作为输入并且会相当迅速地引发它的异常)因为你失去了每个执行循环的逻辑测试,代价是一个更昂贵的异常(exception),但频率要低得多。

我想检查的是这在 C# 中是否成立,或者与异常相比逻辑测试是否足够快以使其成为一个小的极端情况?

哦,我只对发布性能感兴趣,对调试不感兴趣。


好吧,我的例子太模糊了试试这个:

天真的解决方案:

return float(A) % 20 # coerse A to a float so it'll only fail if we actually don't
# have anything that can be represented as a real number.

基于逻辑的解决方案:

if isinstance(A, Number): # This is cheaper because we're not creating a new
return A % 20 # object unless we really have to.
else:
return float(A) %20

基于异常的解决方案:

try: # Now we're doing any logical tests in the 99% of cases where A is a number
return A % 20
except TypeError:
return float(A) % 20

使用 FSO、数据库连接或网络上的东西的例子更好,但对于一个问题来说有点啰嗦。

最佳答案

可能不会。 .NET 异常相对昂贵。

出于这个原因,一些 .NET 函数提供了这两种变体。 (通常推荐返回成功代码的int.TryParse,因为它比失败时抛出异常的int.Parse更快)

但唯一重要的答案是您自己的分析数据告诉您的内容。如果您需要性能,那么您需要衡量、衡量、再衡量。

因为在我的电脑上,用我的代码,用的.NET框架版本,在这个 在您的计算机上,使用您的 代码,使用您阅读时的 .NET 框架版本,时间可能不是最快的。

关于c# - 请求许可或道歉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6305551/

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