为什么很多语言的JIT实现最后会失败,主要的技术原因和难点有哪些?
example:
unladen-swallow -
A faster implementation of Python
http://psyco.sourceforge.net/
回复内容:
就拿 pypy 和 rubinius 这一对相映成趣的奇葩来看。JIT 越优化,与 C 交互的接口会越慢越复杂。 py 和 ruby 这类高度依赖三方 C 扩展的社区环境,很难忍痛割却这些遗产。rubinius 语法都没能做到兼容,很少有人能用起来;pypy 你 C 扩展就坑去吧。反观 jruby 能在很大程度上兼容 rails,而且附加了无 GIL 的真多线程,到现在已经算比较成功了。 至于 lua 和 js 这类沙盒里跑的内嵌脚本引擎,几乎没有与 C 扩展这个说法(包管理都没个说法),反而优化得比较凶。 JIT 提升效率的同时会牺牲代码清晰度和跨平台性。一般不会 merge 回主支,只能平行维护。同时因为较差的清晰度和跨平台性又难以找到足够的维护力度。 哪个语言的JIT失败了 楼主提到的JIT多与Python有关,但是不该把Python关键字扔掉,因为显然不是JIT导致了这些项目改进的失败。 所以正确的问法应该是:为什么Python的许多JIT改进版本会失败?如果把问题局限在Python,那么确实是这样的。 但是并非是JIT导致了这些项目的失败,JIT恰恰是真的解决了Python指令码解释执行慢的问题。 所以无论是Pypy或者Jython在很多性能测试指标下面能超越Cpython一截。这个意义上讲并不失败。 然而最关键的问题就是前向兼容,在采用JIT,去掉引用计数后,这些实现版本很大程度上不能和以前的Python程序库兼容了。因此很多Python的程序库就不能用了,比如说Numpy就不能用了。正是由于兼容性的原因,虽然执行效率一定程度上改进了,但是导致很多旧的程序库不能用了。
Python并不是以执行效率见长的语言,所以执行效率的提高很大程度上完全不能弥补前向兼容性。 因此这些版本当然不受待见了。 不过我还是不会说这些项目“失败”了。
今年早些的时候,Dropbox开始了一个叫Pyston得项目,致力于不仅要JIT Python执行,还要维持前向兼容。 在这么多前面尝试项目倒下的情况下,祝他们好运。 感觉pypy的jit非常成功啊,很多逻辑运算甚至接近了go的速度。pypy很可能是python在服务器领域的未来。 改造成jit基本成功了吧,只是很难证明失败。
如果是想证明自己是宇宙最好的语言,不同语言一般对业务处理中的效率影响微小,成功的语言都是在不同领域发挥其最基本的作用,而盲目对脚本语言做jit,想拿来对比编译语言,结果并没有让人”大喜过望“,甚至最后对语言产生怀疑,但jit失败了么,其实没有,他啥也没证明。 就算是unladen-swallow的性能也已经大大提高了,只是没有达到预期目标而已,失败这个词太重了。 你是说 那门语言呢 php 还是 js

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

你应该关心DependencyInjection(DI),因为它能让你的代码更清晰、更易维护。1)DI通过解耦类,使其更模块化,2)提高了测试的便捷性和代码的灵活性,3)使用DI容器可以管理复杂的依赖关系,但要注意性能影响和循环依赖问题,4)最佳实践是依赖于抽象接口,实现松散耦合。

是的,优化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)优化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,并避免使用

theKeyStrategiestosiminificallyBoostphpapplicationPermenCeare:1)useOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)优化AtabaseInteractionswithPreparedStateTemtStatementStatementSandProperIndexing,3)配置

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增强codemodocultion,可验证性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

选择DependencyInjection(DI)用于大型应用,ServiceLocator适合小型项目或原型。1)DI通过构造函数注入依赖,提高代码的测试性和模块化。2)ServiceLocator通过中心注册获取服务,方便但可能导致代码耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化进行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。