Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Numpy的运行速度是MATLAB的一半

Numpy的运行速度是MATLAB的一半
EN

Stack Overflow用户
提问于 2013-04-23 20:21:29
回答 1查看 4.6K关注 0票数 13

我一直在将MATLAB代码移植到Python上,经过大量的工作,我已经有了可以工作的东西。然而,缺点是Python比MATLAB运行我的代码更慢。我知道使用优化的ATLAS库会加快速度,但实际上实现这一点会让我感到困惑。下面是正在发生的事情:

我在没有安装BLAS的情况下启动ipython会话:

代码语言:javascript
运行
AI代码解释
复制
import numpy.distutils.system_info as sysinfo
import time
In [11]: sysinfo.get_info('atlas')
Out[11]: {}

timeit( eig(randn(1E2,1E2)) )
100 loops, best of 3: 13.4 ms per loop

在Matlab中,相同的代码运行速度快两倍

代码语言:javascript
运行
AI代码解释
复制
tic,eig(randn(1E2));toc*1000
    6.5650   

我从Ubuntu存储库安装了未优化的ATAS deb。重新启动ipython,现在我得到:

代码语言:javascript
运行
AI代码解释
复制
In [2]: sysinfo.get_info('atlas')
 ...
Out[2]: 
{'define_macros': [('ATLAS_INFO', '"\\"3.8.4\\""')],
 'include_dirs': ['/usr/include/atlas'],
 'language': 'f77',
 'libraries': ['lapack', 'f77blas', 'cblas', 'atlas'],
 'library_dirs': ['/usr/lib/atlas-base/atlas', '/usr/lib/atlas-base']}

以及测试代码:

代码语言:javascript
运行
AI代码解释
复制
In [4]: timeit( eig(randn(1E2,1E2)) )
100 loops, best of 3: 16.8 ms per loop

所以没有更快的速度。如果有什么不同的话,那就是稍微慢一点。但我还没有切换到优化的BLAS。我遵循以下说明:http://danielnouri.org/notes/category/python/我构建这些库,并用这些库覆盖未优化的版本。我重新启动了ipython,但没有任何变化:

代码语言:javascript
运行
AI代码解释
复制
In [4]: timeit( eig(randn(1E2,1E2)) )
100 loops, best of 3: 15.3 ms per loop

难道不能比这更好吗?在这个简单的例子中,MATLAB的速度仍然是原来的两倍。在一个真实的例子中,我在傅立叶域中进行图像配准,Matlab的等效配准比Python版本快4到5倍。有没有人能让Numpy以MATLAB的速度工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-23 20:48:02

简单的例子

Numpy同时计算特征向量和特征值,因此它将花费大约两倍的时间,这与您的速度减慢一致(使用np.linalg.eigvals仅计算特征值)。

最后,np.linalg.eig是dgeev的一个小包装器,很可能同样的事情也会发生在使用MKL的Matlab中。

为了在线性代数中获得几乎相同的速度,您可以针对MKL或OpenBLAS构建Numpy。ContinuumEnthought提供了一些商业服务(可能对学者是免费的)。您还可以获得MKL并构建Numpy yourself

真实世界的例子

4倍的速度似乎太慢了(我用Numpy重写了一些Matlab代码,两个程序的执行方式非常相似)。考虑到最近的Matlab版本提供了一个简单的JIT,所以循环并不像通常的Python实现那样糟糕。如果你正在做很多快速傅立叶变换,你可以从使用FFTW wrapper (pyFFTW看起来不错,但我还没有用过它)中受益。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16178471

复制
相关文章
利用logstash的logstash-input-jdbc插件实现mysql增量导入ES的介绍
3, 官网介绍例子,使用 logstash-input-jdbc 到 elasticsearch
全栈程序员站长
2022/09/10
7620
利用logstash的logstash-input-jdbc插件实现mysql增量导入ES的介绍
logstash安装与logstash-input-jdbc插件使用
于是elasticsearch提供了可以直接和数据库关联,并且自动根据数据库中的数据更新索引logstash。
大道七哥
2019/09/10
1.9K0
logstash安装与logstash-input-jdbc插件使用
如何进行Logstash logstash-input-jdbc插件的离线安装
我们单位的服务器位于隔离区,不允许链接互联网,因此整理了在ELK集群上离线安装Logstash的jdbc input插件的方法,供大家参考。
大江小浪
2018/07/24
1.5K0
logstash-input-jdbc
https://segmentfault.com/a/1190000011784259
丁D
2022/08/12
5840
利用Logstash插件进行Elasticsearch与Mysql的数据
Logstash与Elasticsearch的安装就不多说了,我之前有两篇文章写的比较详细了ElasticSearch + Logstash + Kibana 搭建笔记 和 Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台。
大江小浪
2018/07/24
1.2K0
logstash插件推荐
1、kafka 参考:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html 2、hdfs 参考:https://www.elastic.co/guide/en/logstash/5.4/plugins-outputs-webhdfs.html 3、zabbix 参考:https://www.elastic.co/guide/en/logstash/5.4/plugins-outputs-zabbix.
苦咖啡
2018/04/28
8810
logstash安装插件
查看可以用插件 bin/logstash-plugin list 安装新插件 方案1、从https://github.com/logstash-plugins/安装新插件 bin/logstash-plugin install logstash-output-exec 方案2、本地安装 bin/logstash-plugin install /data/my-plugin.gem
苦咖啡
2018/04/28
3K0
logstash插件参数类型
Codec,logstash codec的名字,被转换内容以相应codec插件来展示,如下所示:
johnhuster的分享
2022/03/28
3080
logstash input插件开发
logstash作为一个数据管道中间件,支持对各种类型数据的采集与转换,并将数据发送到各种类型的存储库,比如实现消费kafka数据并且写入到Elasticsearch, 日志文件同步到对象存储S3等,mysql数据同步到Elasticsearch等。
bellen
2018/07/30
4.1K0
logstash input插件开发
WAF防火墙数据接入腾讯云ES最佳实践(上)
本文描述问题及解决方法适用于 腾讯云 Elasticsearch Service(ES)。
岳涛
2023/08/09
1.5K2
WAF防火墙数据接入腾讯云ES最佳实践(上)
Elasticsearch系列组件:Logstash强大的日志管理和数据分析工具
Logstash 是一个开源的数据收集引擎,它具有实时管道功能,可以用来统一处理来自不同源的数据,并将其发送到你选择的目标。Logstash 支持多种类型的输入数据,包括日志文件、系统消息队列、数据库等,可以对数据进行各种转换和处理,然后将数据发送到各种目标,如 Elasticsearch、Kafka、邮件通知等。
栗筝i
2023/10/23
2.7K0
Elasticsearch系列组件:Logstash强大的日志管理和数据分析工具
Logstash-input-jdbc 同步 mysql 准实时数据至 ElasticSearch 搜索引擎
logstash-input-jdbc 插件将 Zabbix 数据库中 alerts 表告警数据推送至 ElasticSearch 搜索引擎。
Kevin song
2020/08/28
2.7K0
Logstash-input-jdbc 同步 mysql 准实时数据至 ElasticSearch 搜索引擎
mysql同步elasticsearch调研
目前项目采用的是更新数据后再更新elasticsearch,各种历史原因导致很多数据并不是同步的,业务互相紧耦合, 所以需要调研适合团队发展的 db同步es机制,从业务层面剔除这部分功能维护。 下面是本人在搭建、配置、调试过程中一些总结和踩完坑后整理的配置。
用户2825413
2019/07/15
9740
mysql同步elasticsearch调研
【愚公系列】2022年12月 Elasticsearch数据库-.NET CORE的Serilog=>Rabbitmq=>Logstash=>Elasticsearch的日志传输(四)
Logstash是一种分布式日志收集框架,经常与ElasticSearch,Kibana配置,组成著名的ELK技术栈,非常适合用来做日志数据的分析。logstash具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。当然它可以单独出现,作为日志收集软件,你可以收集日志到多种存储系统或临时中转系统,如MySQL,Redis,Kakfa,HDFS, Lucene,Solr等,并不一定是ElasticSearch。
愚公搬代码
2022/12/18
7300
【愚公系列】2022年12月 Elasticsearch数据库-.NET CORE的Serilog=>Rabbitmq=>Logstash=>Elasticsearch的日志传输(四)
Logstash使用jdbc_input同步Mysql数据时遇到的空时间SQLException问题
今天在使用Logstash的jdbc_input插件同步Mysql数据时,本来应该能搜索出10条数据,结果在Elasticsearch中只看到了4条,终端中只给出了如下信息
大江小浪
2018/07/24
1.3K0
ElasticSearch 使用 Logstash 从 MySQL 中同步数据
目的是希望将现有的数据导入到 ElasticSearch 中,研究了好几种,除了写代码的方式,最简便的就是使用 Logstash 来导入数据到 ElasticSearch 中了。
皇上得了花柳病
2020/05/06
3.6K0
logstash_output_kafka:Mysql同步Kafka深入详解
实际业务场景中,会遇到基础数据存在Mysql中,实时写入数据量比较大的情景。迁移至kafka是一种比较好的业务选型方案。
铭毅天下
2019/05/08
3K0
logstash_output_kafka:Mysql同步Kafka深入详解
ElasticSearch + Logstash进行数据库同步
在我们使用mysql和elasticsearch结合使用的时候,可能会有一些同步的需求,想要数据库和elasticsearch同步的方式其实有很多。
Bug开发工程师
2019/05/05
2.1K0
ElasticSearch + Logstash进行数据库同步
logback 配置日志输出到 logstash
发表于2018-06-062019-01-01 作者 wind <?xml version="1.0" encoding="UTF-8" ?> <configuration> <inclu
前Thoughtworks-杨焱
2022/02/19
1.3K0
实战 | 使用Spring Boot + Elasticsearch + Logstash 实现图书查询检索服务
前面我们介绍了Spring Boot 整合 Elasticsearch 实现数据查询检索的功能,在实际项目中,我们的数据一般存储在数据库中,而且随着业务的发送,数据也会随时变化。
架构师精进
2023/03/23
1.3K0
实战 | 使用Spring Boot + Elasticsearch + Logstash 实现图书查询检索服务

相似问题

使用UPSERT函数的jdbc输出插件logstash

10

用于MYSQL的Logstash输入插件

15

Logstash jdbc插件问题

10

Logstash jdbc插件的理解

12

JDBC输入logstash插件多次从mysql获取数据

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档