我试图了解为什么我的一个python脚本比gfortran慢了约4倍,我必须这样做:

import numpy as np

nvar_x=40

nvar_y=10

def fn_tst(x):

for i in range(int(1e7)):

y=np.repeat(x,1+nvar_y)

return y

x = np.arange(40)

y = fn_tst(x)

print y.min(),y.max()

这比以下fortran代码慢大约13倍

module test

integer,parameter::nvar_x=40,nvar_y=10

contains

subroutine fn_tst(x,y)

real,dimension(nvar_x)::x

real,dimension(nvar_x*(1+nvar_y))::y

do i = 1,10000000

do k = 1,nvar_x

y(k)=x(k)

ibeg=nvar_x+(k-1)*nvar_y+1

iend=ibeg+nvar_y-1

y(ibeg:iend)=x(k)

enddo

enddo

end subroutine fn_tst

end module test

program tst_cp

use test

real,dimension(nvar_x)::x

real,dimension(nvar_x*(1+nvar_y))::y

do k = 1,nvar_x

x(k)=k-1

enddo

call fn_tst(x,y)

print *,minval(y),maxval(y)

stop

end

你能否提出加速python脚本的方法.其他指向numpy良好性能的指针将不胜感激.我宁愿坚持使用python而不是为fortran例程构建python包装器.

谢谢

@isedev,是的,就是这样. 1.2s gfortran与6.3s for Python?这是我第一次担心性能,但正如我所说,在我试图加速的代码中,我只能使用Python获得大约四分之一的速度.

对,抱歉代码没有做同样的事情.实际上,您在循环中指示的内容更像我在原始代码中所拥有的内容.

除非我遗漏了什么,否则我不同意最后的陈述:我必须在fn_tst中创建y.和np.repeat只是RHS上的一个术语(将o / p直接放在现有数组中).如果我注释掉np.repeat术语的话很快……

rhs_slow = rhs[:J]

rhs_fast = rhs[J:]

rhs_fast[:] = c* ( b*in2[3:-1] * ( in2[1:-3] - in2[4:] ) - fast) + hc_ovr_b * np.repeat(slow,K) #slow

python如何提高性能_python – 如何在这个短代码中提高numpy性能...相关推荐

  1. 基于python的九轴惯性传感器的数据预处理代码-中值滤波实验

    ** 基于python的九轴惯性传感器的数据预处理代码-中值滤波实验 ** import random import numpy as np import pandas as pd import sc ...

  2. python服务端编程_Python WebSocket服务端编程代码完成gtalk机器人

    本文python源码为实现,Python WebSocket服务端编程代码完成gtalk机器人的全部代码段.需要用到python sys.sleekxmpp.reactor等python模块及方法,在 ...

  3. python自动读取邮件_Python自动化读取邮件基础代码讲解

    大家好,在之前的文章中我们已经了解如何对自己的邮箱做一些代码操作前的基础配置,也学会了通过 yagmail 发送邮件.这篇文章将分别介绍两个很实用的收取及读取邮件的库:imbox 和 poplib,主 ...

  4. python随机数种子怎么用_Python 随机种子介绍,PyTorch 中随机种子的设置应用

    随机种子是什么? 随机种子是针对 随机方法 而言的. 随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是基于生成随机数来实现的.在深度学习中,比较常用的随机方法的应 ...

  5. JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码...

    本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍) ...

  6. python opencv图像对比度_Python OpenCV cv2使图像亮度和对比度提高100%的简单方法

    这里有一个非常数学和直接的方法来调整亮度和对比度作为参数.对比度控制输出值与输入值绘图中直线方程的斜率.截距取决于亮度和对比度.亮度控制直线坡度的轴点,以便所需结果越亮,轴点越高.这里的代码提供了br ...

  7. python文字识别库_python做文字识别一行代码都不用!

    今天,我们用Python实现对图像文字的识别,很简单!利用的库是pillow和pytesseract.pytesseract需要从网上下载,也很方便. 学习Python中有不明白推荐加入交流群 号:9 ...

  8. python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例

    Python+tkinter使用80行代码实现一个计算器实例 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码, ...

  9. python编程与特征提取_Python进行特征提取的示例代码

    #过滤式特征选择 #根据方差进行选择,方差越小,代表该属性识别能力很差,可以剔除 from sklearn.feature_selection import VarianceThreshold x=[ ...

最新文章

  1. C++报错无效的预处理命令include_无废话--Mac OS, VS Code 搭建c/c++基本开发环境
  2. glance was not installed properly
  3. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式
  4. openshift_红帽Openshift:入门–云中的Java EE6
  5. 读书笔记之 数据框操作与常用函数
  6. 第六步_安装SSH服务
  7. 关于UIScrollViewDelegate协议中每个回调函数的意义及执行
  8. Style transfer系列论文之——Arbitrary Style Transfer in Real-time with Adaptive Instance Normali,ICCV, 2017
  9. E-Prime学习笔记
  10. 记七彩虹刷bios问题
  11. C语言结构体(Struct)——摘自C语言学习网
  12. std::future、std::promise、std::packaged_task、std::async
  13. 以太坊系列(二)---Ubuntu20.04安装以太坊开发环境并建立私有链
  14. Adversarial Semantic Alignment for Improved Image Captions
  15. Clipper:布尔运算类型
  16. 人非生而知之者,智之者,孰能无惑,无过
  17. CSS基本布局——定位
  18. mysql8.0源代码解析_源码解读:MySQL 8.0 InnoDB无锁化设计的日志系统
  19. MIT发现语言模型内的事实知识可被修改??
  20. 易语言软件登录界面教程

热门文章

  1. 传感器 Sensor 加速度【示例】
  2. ECSHOP商城网站建设之自定义调用广告方法(二)
  3. VS2005 中关于“LC.EXE已退出,代码为 -1”的错误解决方法。
  4. Linux 命令(19)—— tar 命令
  5. C/C++ 头文件的作用和用法
  6. MySQL 常见面试知识点
  7. css 设置overflow:scroll 滚动条的样式
  8. 盘阵多路径学习(转)
  9. 如何解决代码嵌套太深问题
  10. IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置...