我正在研究算法,并决定将Java程序从教科书移植到Python,因为我不喜欢Java的开销,特别是对于小程序来说,这是一种练习。在

算法本身非常简单,它只是以一种蛮力的方式从数组中取出所有的三元组,然后计算三元组中有多少个相加为零(例如:[-2,7,-5])public static int count(int[] a) {

int N = a.length;

int cnt = 0;

for (int i = 0; i < N; i++) {

for (int j = i+1; j < N; j++) {

for (int k = j+1; k < N; k++) {

if (a[i] + a[j] + a[k] == 0) {

cnt++;

}

}

}

}

return cnt;

}

我把它移植到:

^{pr2}$

现在测量这些函数需要:java : array of 2000 elements --> 3 seconds

python : array of 2000 elements --> 2 minutes, 19 seconds

UPDATE

python (pypy) : array of 2000 elements --> 4 seconds ( :-) )

当然,这并不是一个好的算法,它只是在这里和教科书中说明。我以前用Java和Python都做过一些编程,但是没有意识到这种巨大的差异。在

问题归结为:如何克服这个问题?更具体地说:这段代码是一个好的端口,还是我遗漏了一些琐碎的东西?在

例如,切换到另一个运行时Jython是一个解决方案吗?在eclipse中保存我的代码库并添加一个解释器(编译器)容易吗?或者换成另一个解释器/编译器只会让事情稍微好一点吗?在

现在我在Windows7上使用Python2.7.3和Java1.72ibts。在

我知道在java/python性能方面也有类似的问题,但是对于python来说,有不同的运行环境这样的答案目前对我没有帮助。在

我想知道的是,这些运行时中的一些是否可以弥补这个巨大的差距,是否值得epxlore?在

更新:

我安装了pypy,现在差别很大。。。在

更新2:

我注意到一些非常有趣的事情:这里答案中的islice方法在“常规”python上更快,但在pypy上慢得多。即使如此,pypy在该算法中使用常规循环或islice,仍然保持了更快的速度

正如Bakuriu在一篇评论中所指出的,运行时环境可以起到很大的作用,但是对于这种算法来说,运行时环境更快并不一定对任何算法更快。。。在

python比java慢_对于这种算法,Python与Java相比非常慢相关推荐

  1. mooc数据结构与算法python版期末考试_数据结构与算法Python版-中国大学mooc-试题题目及答案...

    数据结构与算法Python版-中国大学mooc-试题题目及答案 更多相关问题 婴儿出生一两天后就有笑的反应,这种笑的反应属于(). [判断题]填制原始凭证,汉字大写金额数字一律用正楷或草书书写,汉字大 ...

  2. python数据结构视频百度云盘_数据结构与算法Python视频领课

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 课程简介: 本课程包含Python编程基础的基本语法及变量,基本数据结构,Code Structure,Function.让学生在学会Python基础的同 ...

  3. python运动物体检测_运动检测ViBe算法python实现代码

    运动物体检测一般分为背景建模和运动物体分析两步.即构建不包含运动物体的背景模型.然后将新的视频帧和背景模型对比,找出其中的运动物体.目前比较好的背景建模算法有两种:1)文章(Zivkovic Z. ( ...

  4. 冒泡排序java代码_数据结构与算法—冒泡排序(Java实现)

    [toc] 冒泡排序 程序代码 package com.uplooking.bigdata.datastructure; import java.util.Arrays; public class B ...

  5. 数据结构与算法python版 期末考试_数据结构与算法Python版期末在线考试OJ部分

    1 二叉树路径(10分) 题目内容: 给定一个二叉查找树的节点插入顺序,请重新构建这个二叉查找树,并按从左至右顺序返回所有根节点至叶节点的路径 输入格式: 一行整数,以空格分隔 注:测试用例中不包含重 ...

  6. mooc数据结构与算法python版期末测验_中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案...

    中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案 更多相关问题 采用fopen()函数打开文件,支持文件读取的参数有: [简答题]简单阐述高分子材料热-机械特征及成型加工的关系,并 ...

  7. 小白学习python好还是java好_小白应该学Python还是Java?

    Java和Python两门语言都是目前非常热门的语言,可谓北乔峰南慕容,二者不分上下,棋逢对手.但是对于初学者来说,非常困惑,因为时间和精力有限,上手必须要先学一门,到底选那个好呢,今天3分钟带你透彻 ...

  8. 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归

    1.梯度下降-矩阵形式 上篇文章介绍了一元线性回归,包括Python实现和sklearn实现的实例.对比,以及一些问题点,详情可以看这里: 链接: 手写算法-Python代码实现一元线性回归 里面封装 ...

  9. 数据结构与算法python描述_数据结构与算法——Python语言描述.pdf

    数据结构与算法--Python语言描述.pdf 欢迎加入非盈利Python编学习交流程QQ群783462347,群里免费提供500+本Python书籍! 欢迎加入非盈利Python编程学习交流程QQ群 ...

最新文章

  1. java foreach 原理_一不小心就让Java开发者踩坑的failfast是个什么鬼?
  2. Python学习之旅 —— 基础篇(二)数据类型、运算、while循环
  3. [LeetCode] Majority Element
  4. XSS 前端防火墙 —— 无懈可击的钩子
  5. linux 暂停一段时间,sleep命令_Linux sleep命令:让程序暂停或休眠一段时间
  6. 如何将rdd导入数据库中【简单实例】
  7. 如何用FineReport制作一张报表(二)
  8. Bootstrap快速浮动.pull-left 或 .pull-right 类
  9. 2014-7 Andrew Ng 自动化所报告听后感
  10. 从零开始学习编程_从这里开始学习编程
  11. 计算机杀毒软件的功能,PC Hunter64(手工杀毒软件)的详细功能介绍
  12. 纯原生js自定义弹窗
  13. IPS和IDS的区别
  14. 关于ProcessOn在线做图工具上找不到宋体,黑体字体样式的解答
  15. 【AI创造营】网抑云选手等级鉴定器
  16. oracle 导入报错ORA-39126,ORA-06502,LPX-00230
  17. N2N组建虚拟局域网——筑梦之路
  18. Java Vue uni-app 三端实现,滑动拼图验证码
  19. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day37】—— 并发编程3
  20. ue4游戏传送门实现

热门文章

  1. 华为Mate30 Pro高清渲染图曝光:后置四摄+挖孔全面屏
  2. 又反转了!IEEE发布最新声明:解除对华为系成员的限制
  3. 面向对象,面向服务,面向组件三种编程模式有什么区别
  4. Spring容器创建流程(2)创建beanFactory,加载BeanDefinition
  5. linux内核文件cache机制,Linux内核文件Cache机制
  6. 半年成java大佬_通过自学60天成为java大佬 第一天 知识点总结 数据类型
  7. hiredis源码分析与简单封装
  8. jQuery中append()、prepend()与after()、before()的区别
  9. Oracle和Mysql的不同
  10. php画图教程,php画图实例_PHP