使用幂运算 **0.5 的效率比 math.sqrt 低?

2023-11-22

引用自“Python 编程:计算机科学简介"

我们可以取平方根 使用求幂**。使用 math.sqrt 效率更高一些。

“有点”,但到什么程度、如何呢?


理论上,哈马尔的回答 and 达菲莫的回答是很好的猜测。但实际上,在我的机器上,它是not更高效:

>>> import timeit
>>> timeit.timeit(stmt='[n ** 0.5 for n in range(100)]', setup='import math', number=10000)
0.15518403053283691
>>> timeit.timeit(stmt='[math.sqrt(n) for n in range(100)]', setup='import math', number=10000)
0.17707490921020508

部分问题在于.手术。如果你导入sqrt直接进入命名空间,你会得到轻微的改进。

>>> timeit.timeit(stmt='[sqrt(n) for n in range(100)]', setup='from math import sqrt', number=10000)
0.15312695503234863

那里的关键词:slight.

进一步的测试表明,随着数字变大,您从使用中获得的好处sqrt增加。但仍然没有很多!

>>> timeit.timeit(stmt='[n ** 0.5 for n in range(1000000)]', setup='import math', number=1)
0.18888211250305176
>>> timeit.timeit(stmt='[math.sqrt(n) for n in range(1000000)]', setup='import math', number=1)
0.18425297737121582
>>> timeit.timeit(stmt='[sqrt(n) for n in range(1000000)]', setup='from math import sqrt', number=1)
0.1571958065032959
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用幂运算 **0.5 的效率比 math.sqrt 低? 的相关文章

随机推荐

  • OpenCV imwrite 2.2 在 Windows 7 上导致异常,并显示消息“OpenCV 错误:未指定错误(无法找到指定扩展名的编写器)”

    我正在将 OpenCV 2 2 应用程序从 Unix 可以运行 移植到 Windows 7 64 位上 当调用 cv imwrite 时 我收到以下异常 OpenCV 错误 未知函数中出现未指定错误 无法找到指定扩展名的编写器 文件 hig
  • OpenGL 中的低分辨率模仿旧游戏

    我有兴趣知道如何在 OpenGL 中模仿旧游戏 如 Atari 2600 的低分辨率来制作 fps 游戏 我想最好的方法是将缓冲区写入纹理 放在四边形上并将其显示到屏幕分辨率 看看http www youtube com watch v E
  • 用python进行曲线拟合

    我正在尝试适应一些数据和东西 我知道有一个简单的命令可以使用 python numpy matplotlib 来执行此操作 但我找不到它 我认为这就像 popt popc numpy curvefit f x where popt是参数f
  • Flask 会话不会持续

    我最近部署了我的第一个 Flask 应用程序 实际上是第一个 Web 应用程序 我遇到的一个问题与会话有关 但没有运气追踪到 我正在做的是当用户登录时我设置session user user id发生的情况是 在发出涉及该会话密钥的请求时
  • Mac OS X 上的 Java Swing GUI

    您是否曾尝试使用 Swing 但最终却因为它无法实现您想要的功能而改变课程 我对 Swing 还很陌生 5 年前才将它用于学校项目 但似乎 Swing 在提供更原生的外观和感觉方面已经取得了很大的进步 以至于我正在考虑使用它来开发Mac O
  • facebook Uncaught OAuthException:必须使用活动访问令牌来查询有关当前用户的信息

    我一直在努力找出这是怎么回事 我的脚本运行良好一段时间 然后突然一半停止了 我正在访问 api 并取回访问令牌 有了访问令牌 我就可以很好地访问用户的公共信息 但是 当我尝试将信息发布到他们的 FB 帐户时 我收到此错误 Fatal err
  • 当我重画太多时停止摆动

    我正在制作一个带有瓷砖地图的角色扮演游戏 为了生成图块地图 我循环遍历一个二维数组 但这意味着当我重新绘制时 我每次都必须这样做 如果我重画太多 屏幕就会闪烁 我怎样才能阻止这种情况 package sexyCyborgFromAnOthe
  • 了解堆栈对齐强制

    考虑以下 C 代码 include
  • 好友列表的 SQL 加入帮助

    我有三个数据库表 users user profiles and friends users id username password 用户个人资料 id user id 全名 friends id usera id userb id 查找
  • Android 中的 SQLiteDiskIOException

    我们正在获得大量SQLiteDiskIOException我们的 Android 应用程序中出现错误 堆栈跟踪类似于以下内容 E AndroidRuntime 2252 Caused by android database sqlite S
  • 反跨域策略的意义何在?

    为什么 HTML DOM 和 或 Javascript 的创建者决定禁止跨域请求 我可以看到禁止它的一些非常小的安全好处 但从长远来看 这似乎是一种使 Javascript 注入攻击威力更小的尝试 无论如何 对于 JSONP 来说 这都是没
  • 检测 UITableViewCell 何时超出范围

    如何检测 UITableViewCell 派生对象何时从表中删除并进入缓存 实施以下任一方法 当从表中删除时 superview 将变为 nil 当添加回表时 超级视图将被设置为表视图 void willMoveToSuperview UI
  • 如何向ListView添加子项?

    我正在尝试获取具有子项工作的列表视图的最简单的示例 但是这段代码 private void button1 Click object sender EventArgs e listView1 Groups Add new ListViewG
  • 使Python文件中的函数定义与顺序无关[重复]

    这个问题在这里已经有答案了 我使用Python CGI 在定义函数之前我无法调用它 在 Oracle PL SQL 中 有一个 前向声明 的技巧 将所有函数命名在顶部 因此定义的顺序并不重要 Python中也有这样的技巧吗 example
  • 如何在不使用for循环的情况下获取迭代中正在处理的当前元素的索引?

    我读过了如何使用索引位置迭代 Vec 答案是在哪里使用enumerate in a for loop 但如果我不使用for 这样循环 fn main let v vec 1 10 iter map x x 1 index lt collec
  • 解析时不进行字符串分割

    这是讨论的副产品其他一些问题 假设我必须解析大量很长的字符串 每个字符串包含一个序列doubles 当然 在文本表示中 由空格分隔 我需要解析double变成一个List
  • Heroku 新手:将我的应用程序推送到 Heroku 时出错 [重复]

    这个问题在这里已经有答案了 我使用的是 Ubuntu 10 04 通过遵循教程在这里 我已经创建了Heroku帐户 安装了GIT and Heroku成功地 我已上传 SSH 密钥并将 heroku 添加到我的系统 PATH 中 之后 我做
  • 为什么 python 中的 \n 给出两个空行?

    我不明白为什么 n 在输出中给出两个空行 例如 gt gt gt def my function print ABC print n print DEF gt gt gt my function ABC First blank line S
  • Gson Json 解析器 数组的数组

    想要解析一些 Json 并解析出数组的数组 不幸的是我不知道如何处理 json 中的嵌套数组 json type MultiPolygon coordinates 71 25 42 33 71 25 42 33
  • 使用幂运算 **0.5 的效率比 math.sqrt 低?

    引用自 Python 编程 计算机科学简介 我们可以取平方根 使用求幂 使用 math sqrt 效率更高一些 有点 但到什么程度 如何呢 理论上 哈马尔的回答 and 达菲莫的回答是很好的猜测 但实际上 在我的机器上 它是not更高效 g