【问题标题】:Comparing python performance from hardware specifics从硬件细节比较 python 性能
【发布时间】:2020-05-23 08:51:13
【问题描述】:

我正在笔记本电脑上使用 Python 进行一些模拟,以完成我的硕士学位项目,最近发现我的台式电脑在执行完全相同的代码时具有与笔记本电脑几乎相同的性能。问题是我的笔记本电脑有 i7 处理器,而台式电脑有 i3。更具体地说:

笔记本电脑:i7-5500U @2.40 GHz(64 位,双核)

台式机:i3-4150 @3.50 GHz(32 位,一个核心)

我不是计算机科学专家,也不研究它,这让我很惊讶。我知道核心的数量应该不会影响性能,因为python只使用一个,但它真的都依赖时钟频率吗?如果是的话,拥有具有这种时钟频率的 i7 有什么好处?我还缺少其他数据吗?预测计算机性能需要考虑哪些数据?

【问题讨论】:

  • 当然,时钟频率很重要。但是,例如,系统架构(64 位与 32 位)以及许多其他事情也会如此,这取决于您在做什么。请注意,Python 程序绝对可以利用多核,因此再次确实取决于。这里没有足够的信息来说明任何有用的信息。
  • 被检查的程序只是使用 numpy 来执行随机采样和多维数组操作。通常我将数字的数据类型设置为“int8”,以节省内存,因为数组非常大。没有多线程或类似的东西。架构如何影响性能?
  • 嗯,numpy 大量依赖于多线程代码,具体取决于确切的 BLAS/LAPACK 后端。这是 Python 代码利用多核的典型示例。
  • 如果使用多线程,双核处理器不应该性能更好吗?或者这意味着,如果没有两个核心,i3和i7之间的比较会更尴尬?
  • 很难说没有更多信息。请注意,如果您使用的是 uint8,则它小于任一架构的字长,这通常会在对原始数字类型进行算术等操作时减慢您的速度,但很难完全预测,因为您的数组大小和缓存大小也将发挥重要作用。您正在使用多少内存?您是否尝试过使用原生尺寸?

标签: python performance processor


【解决方案1】:

确实有太多因素决定了您的表现为何如此。考虑:

  • 您的程序是否受内存限制或计算限制?
  • 您的代码真的使用多核吗?
  • 您的程序是否因磁盘访问而变慢?
  • 您是否使用不同的语言版本或性能设置?

这样的因素真的很多;其中一些很难回答,也无法猜测。

如果足够重要,您可以尝试对此进行分析。

【讨论】:

  • 我不确定我是否理解你所说的一切。我的脚本产生系统的时间演化,这需要每个时间步产生 10^11 个随机伯努利(即 0 或 1)提取。如果数字大于 int8 则需要太多内存。我使用 np.random.bytes 和数组的逐点乘法和求和进行一些必要的操作。
猜你喜欢
  • 2011-01-31
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2018-11-13
  • 1970-01-01
相关资源
最近更新 更多