繁体   English   中英

Jint使用字符串非常慢

[英]Jint extremely slow with strings

我目前正在一个需要JS支持(使用C#编写的实际程序)的项目中,并且正在使用Jint作为解释器。 在进行进一步工作之前,我进行了基本的性能测试,以发现编译器(例如Chrome V8)和解释器之间的区别。 我预计最多会出现50倍的减速,但发现的速度接近600倍。 Chrome的V8花了60-100毫秒,而Jint花了60到70

我使用的测试是Mozilla的Dromaeo字符串测试- http://dromaeo.com/?dromaeo / http://dromaeo.com/tests/dromaeo-object-string.html ,有几个小修改,而无需使用工作DOM。

var sTime = new Date();
var startTest = function(){sTime = new Date();};
var test = function(name, fn){ fn(); };
var eTime = new Date();
var endTest = function(){eTime = new Date(); console.log(eTime.getTime() - sTime.getTime());};
var prep = function(fn){ fn(); };

所以,我的问题是:为什么Jint比V8 /本地编译慢600到1000倍? 口译员真的那么慢吗?还是这只是Jint特别慢的特殊情况?

编辑我已经在这里发布了我的测试代码: http : //pastebin.com/R017KKvR

看来string.lastIndexOf是问题所在,需要24-26秒才能完成该测试。

我假设您使用的是Jint v2或更高版本。

在几乎每种情况下,V8始终会更快。 正如您所提到的,问题实际上是多少。 在这种情况下,这可能来自两个因素:

  • 解释多少会影响执行脚本的时间
  • String原型方法的实现程度和优化程度

回答此问题的唯一方法是实际剖析所执行脚本的性能,并了解在何处消耗时间。 一种更简单的第一种方法还可以跟踪每个不同的分组方法调用,以确定总时间是否可能仅来自其中一个或两个。

您可能也发现了一个巨大的性能错误,我真的很乐意修复。

更新

已通过以下提交修复: https : //github.com/sebastienros/jint/commit/2ed825cda866092c728b07a9e2b6109b0d20cbc8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM