阅读更多

27顶
2踩

编程语言

转载新闻 Google 工程师寻求将 Python 性能提高 5 倍

2009-03-30 10:59 by 见习编辑 jejwe 评论(17) 有8870人浏览
Google 的 Python 工程师启动了一个叫做 Unladen Swallow 的项目,寻求提升 Python 编程语言的性能,项目的目标之一是用基于 LLVM 的 JIT 环境取代 Python 的虚拟机,最终将 Python 的性能提升5倍。该项目是 CPython  运行时的一个分支,并将同 Python 的主干兼容。

Unladen Swallow 项目的的目标是使用 LLVM (Low Level Virtual Machine)编译架构建立一个即时编译引擎,取代 Python 自己的虚拟机。这一方法优势明显,就像开发者们在项目计划中描述的那样,该项目使 Python 到 register-based 的虚拟机成为可能,并为将来的优化工作铲平道路。

采用 LLVM 还为更多在 Python 代码中集成其它语言敞开了大门,因为 LLVM 中间层是对语言无关的。

Unladen Swallow 项目还将带来运行时的其它改进,并更好地应用现代硬件的优势。多核处理器的并行处理引起很多开发者的关注,比如他们正考虑实现一个并行的回收器。他们还将改善 Python 的多线程功能以解决 Global Interpreter Lock 死锁问题。

虽然该项目刚刚启动,一个实验性的原型已经建立,源代码可以从 Google Code 站点的版本控制系统下载。当前的一些设计据说已经可以在某些场合提升性能。

他们的第二个里程碑,预计在2009年第二季度展开,这个阶段将有望实现等效的 LLVM 对 Python 虚拟机的替换。

Unladen Swallow 的开发者们希望最终可以在一些对性能要求严格的应用中,用 Python 语言取代 C 语言。他们在 Python 2.6 的基础上展开工作,这样可以兼容目前大量的已有 Python 项目,他们还会对 Python 3 提供平滑过度。

Python 在企业环境应用广泛,也是 Google 内部架构以及 App Engine 的主要技术。Google 对 Python 的投资将使这门语言在快速 Web 程序开发中更具魅力。
来自: comsharp
27
2
评论 共 17 条 请登录后发表评论
17 楼 wayhome 2009-04-06 17:12
mikewang 写道

哦, 不对, 应该叫uvm for python (universal Virtual Machine for python)

都说了是branch, google也说了不会永远维护这个版本,所以是一个branch,而不是一个fork的新版本,适当的时候会合并到主分支
16 楼 phoenixup 2009-04-02 16:35
whaosoft 写道

Python 用的地方多吗 我都是看见google用了

看看排名就知道了,动态语言Python严重推荐使用~~
15 楼 vdgame 2009-03-31 22:54
linux 下pythom用的很多
14 楼 Ahong1980 2009-03-31 22:49
  python不错的。。。
有大靠山来推广就更无敌了
13 楼 tangfeng 2009-03-31 11:42
whaosoft 写道

Python 用的地方多吗 我都是看见google用了



游戏开发中的脚本很多都是Python
12 楼 jindw 2009-03-30 20:38
对python有一点不满,就是那个极诡异的for else
11 楼 mikeandmore 2009-03-30 20:35
行了llvm总算活过来了。。。
10 楼 yejienihao 2009-03-30 18:25
这是个好消息啊
9 楼 xuby 2009-03-30 18:10
whaosoft 写道

Python 用的地方多吗 我都是看见google用了


youtube,douban
8 楼 xuby 2009-03-30 18:09
不错,背后有靠山就是好。
7 楼 harry 2009-03-30 14:37
python的前景还是不错的
6 楼 whaosoft 2009-03-30 13:29
Python 用的地方多吗 我都是看见google用了
5 楼 t0uch 2009-03-30 13:00
啥时候这东西能用到ruby上面?
4 楼 mikewang 2009-03-30 13:00
哦, 不对, 应该叫uvm for python (universal Virtual Machine for python)
3 楼 mikewang 2009-03-30 12:58
又一个jvm诞生了...
2 楼 fangzhouxing 2009-03-30 12:43
很好!!!
1 楼 wenjixiao 2009-03-30 11:42
很好!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 顺序容器(vector、list、string、deque、forward_list)及迭代器、容器适配器

    文章目录概述所有容器都支持的操作迭代器迭代器支持的操作迭代器支持的算术运算迭代器范容器类型size_typeiterator 和 const_iterator类型别名容器定义和初始化拷贝初始化顺序容器独有的构造函数(array除外)array的初始化与内置数组类型的区别6种初始化方法(以vector为例)赋值和swap使用assign(仅顺序容器)使用swapswap仅交换容器内部的数据结构swap的效率容器的大小操作成员函数sizeof()size和capacity为什么list或array没有capac

  • 重载数组下标运算符之后,容易犯的一个小错误

    重载数组下标运算符之后,容易犯的一个小错误

  • C++ 标准容器库小结

    C++ 容器的种类如下: 顺序容器 vector list deque 关联容器 map set multimap multiset 容器适配器 stack queue priority_queue 顺序容器 顺序容器提供了控制元素存储和访问顺序的能力,这种顺序不依赖于元素的值,而是与元素加入容器的位置相对应。 以下表格是标准库中的顺序容器,...

  • C++primer第十一章 关联容器 11.1使用关联容器 11.2 关联容器概述

    关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的。与之相对,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。 虽然关联容器的很多行为与顺序容器相同,但其不同之处反映了关键字的作用 关联容器支持高效的关键字查找和访问。两个主要的关联容器(associative-container)类型是map和set。map中的元素是一些关键字-值(key-value)对:关键字起到索引的作用,值则表示与索引相关联的数据。set中每个元素只包含一个关键字;set支持高效的关键字查询操作

  • C++STL中常用的容器下标[]运算

    在C++STL中常用的容器和类型,下面哪些支持下标"[]"运算? 正确答案: A C D F I   你的答案: B H I (错误) vector list deque map set unordered_map unordered_set stack string

  • python一些常见问题-Python中最常见的10个问题(列表)

    列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,这篇文章列出了10个常用的列表操作,希望对你有帮助。注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑。为此小编建了个Python全栈免费答疑交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步!1、迭代列表...

  • python中不能使用下标运算的有哪些_Python中最常见的10个问题(列表)

    列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,这篇文章列出了10个常用的列表操作,希望对你有帮助。1、迭代列表时如何访问列表下标索引普通版:items = [8, 23, 45]for index in range(len(items)):print(index, "-->", items[index])>>>0 --> 81 ...

  • python不能使用下标运算的是()_下列选项中,不能使用下标运算的是( ).

    【填空题】程序填空题。下面程序实现了计算如下数列的值,请将程序填写完整。 1-2+3-4...966‪‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‪‪‪‪ (其中,所有数字为整数,从1开始递增,奇数为正,偶数为负‪‪‪‪‪‪‫‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪) s = 0 count = 1 while count <=966: if _______________: s -=...

  • python集合为什么不能用下标运算_Python的Set操作,python,集合

    一、集合创建集合(Set):在大括号{}之间、用逗号分隔、无序且不重复的元素集合。集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。使用{}运算符创建集合集合名 = {元素1,元素2,元素3,…}使用set()函数创建集合名 = set(sequence)注:函数set()函数将列表、元组、字符串、range对象等其他可迭代对象转换为集...

  • python中不能使用下标运算的是_第5章习题

    5.8本章习题一、单选题1.关于列表的说法,描述错误的是()。A.list是一个有序集合,没有固定大小B.list可以存放任意类型的元素C.使用list时,其下标可以是负数D.list是不可变的数据类型2.以下程序的输出结果是()。(提示:ord”a”)==97)list_demo=[1,2,3,4,5,'a','b']print(list_demo[11,11st.demo[5])A.15B.2...

  • python不能使用下标运算的是()_python入门(一)

    数据类型Numbers (数字)String (字符串)List (列表)Tuple (元组)Sets(集合)Dictionaries (字典)变量python 中变量不需要被声明,每个变量在使用前必须赋值,变量赋值以后该变量才会被创建Numbers数字类型支持 int、float、bool、complex(复数)>>> a, b, c, d = 1, 1.2, True, ...

  • python不能用列表作为numpy数组的索引。

    比如一个numpy array arr的形状是(6,7,8,9),a=[1,1,1,1] arr[a] 和[arr[i] for i in a]的效果一样。如果要实现把a作为arr的索引取元素, 1,可以把a转换成元组,,把tuple(a)作为索引值就可以了。 2,也可以用r,c,w,h=a a[r,c,w,h]这样取元素。 ...

  • 不要使用有副作用的std.map.[]操作符

    map的[]操作符包含隐性操作:当key不存在的时候,会默认执行insert操作这种隐性操作在大多数情况下是有害的。

  • 机器学习之—Python语法标记

    1.字符串的使用:单引号和双引号的作用是一样的,三引号可以指示一个多行的字符串,可以再三引号之间自由使用单引号或者双引号内容,比如:'''this is "what you name" 'nihao' ''',转义字符:用"\"表示,注意:行末的反斜杠表示字符串在下一行继续,而不是开始新的一行。特点:字符串是不可变的。2.逻辑行与物理行:Python是一个物理行对应一个逻辑行,最好就是这样编写程序...

  • python中不能使用下标运算的是_下列选项中,不能使用下标运算的是() (3.0分)_学小易找答案...

    【判断题】列表的索引是从0开始的 (3.0分)【填空题】Python中的可变数据类型有____和____。 (5.0分)【填空题】A word is a m____free form that has given sound, given m____and s____functions.【单选题】下列函数中,用于返回元祖中元素最小值的是() (3.0分)【判断题】通过insert方法可以在指定位置...

  • python基础知识(集合)

    在python中集合set是一种基本数据的类型,它有可变集合(set())和不可变集合(frozenset)两种。创建集合set、集合set添加、集合删除、交集、并集、差集的操作都是非常实用的方法,接下来将介绍结合的相关知识。一、集合特点1、类似字典dict,但是只有key却没有value值;2、集合的存储没有固定的顺序3、由于集合里面的元素不能重复所以集合一般用来去...

Global site tag (gtag.js) - Google Analytics