您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么在C#中我的计算比Python这么快

为什么在C#中我的计算比Python这么快

答案很简单,就是Python处理所有对象,并且认情况下没有JIT。因此,不是通过修改堆栈上的几个字节并优化代码的较热部分(即迭代)来提高效率,而是与大量表示数字的对象一起使用Python突突,而没有即时优化。

如果您在具有JIT的Python变体中尝试过此操作(例如PyPy),我保证您会看到很大的不同。

一个一般性的技巧是避免使用标准的Python进行非常昂贵的操作(尤其是如果这是为后端处理来自多个客户端的请求)。带有JIT的Java,C#,JavaScript等效率更高。

顺便说一句,如果您想以更Python的方式编写示例,则可以这样做:

from datetime import datetime
start_time = datetime.Now()

max_number = 20
x = max_number
while True:
    i = 2
    while i <= max_number:
        if x % i: break
        i += 1
    else:
        # x was not divisible by 2...20
        break
    x += 1

print('number:       %d' % x)
print('time elapsed: %d seconds' % (datetime.Now() - start_time).seconds)

上面对我执行了90秒。它之所以更快,是因为它看起来像愚蠢的东西,比如x比短start,这是因为我没有经常分配变量,而是依靠Python自己的控制结构,而不是依靠变量检查来跳入/跳出循环。

python 2022/1/1 18:39:36 有267人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶