云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

CDN_服务器建设网站_学生机

小七 141 0

更稳定的LuaJIT性能

这是劳伦斯·特拉特的客座帖子,他是伦敦国王学院信息学系软件开发的程序员和读者,他领导软件开发团队。一年前,我写了一篇关于Cloudflare在伦敦国王学院资助的项目,以帮助改进LuaJIT。我们十二个月的时间到了。我们做得怎么样?发生的第一件事是,我很幸运地聘请了一位LuaJIT专家thomasfransham来参与这个项目。他对LuaJIT的深入了解对启动和运行至关重要——12个月听起来可能很长时间,但很快就过去了!发生的第二件事是,我们意识到Lua基准测试的当前状态不足以让任何人可靠地判断他们是否提高了LuaJIT的性能。不同的Lua实现有不同的基准测试套件,大部分都在小范围内,不容易比较。虽然它不是我们最初计划的一部分,但我们因此投入了大量精力来创建一个更大的基准套件。这听起来像是一项琐碎的工作,但事实并非如此。许多程序的基准都很差,因此寻找合适的候选人是一项艰巨的工作。虽然我们主要是想用Krun对程序进行基准测试(关于原因,请参阅本博客文章),但我们很清楚,大多数人需要一种更快、更简单的方法来对Lua实现进行基准测试。所以我们也做了一个简单的基准测试程序simplerunner.lua公司)那就行了。下面是一个使用它的示例:$luasimplerunner.lua公司跑路虎:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。平均值:1.120762+/-0.030216,最小值1.004843,最大值1.088270运行Fankuch_redux:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。平均值:0.128499+/-0.003281,最小值0.119500,最大值0.119847尽管这是一个简单的基准测试程序,但我们还是忍不住尝试将基准测试的质量提高一点。本质上,运行器在一个新的子流程中运行每个独立的基准;在这个子流程中,它在一个循环中运行每个基准多次(我们称之为进程内迭代)。因此,对于每个基准测试,您可以得到每个进程内迭代的平均时间,然后是95%的置信区间(在±之后的数字):这比任何进程内间隔的最小和最大时间(尽管我们也报告了这些时间),这让您更好地了解值的传播情况。第三件事是了解相对性能现在的各种Lua实现。这是一个比我们预期的更大的任务,因为现在有几个LuaJIT分支,都在不同的地方和不同的开发阶段使用(更不用说每个分支都有主要的编译时变体)。我们最终将范围缩小到最初的LuaJIT存储库和RaptorJIT。然后,我们进行了一个实验(基于我们的VM热身文件中的方法论稍微扩展的版本),使用1500个"进程执行"(即独立的、新的VM进程)和1500个"进程内迭代"(即一个VM进程中for循环中的基准测试)。以下是LuaJIT原始版本的基准测试结果:LuaJIT的结果谷歌.charts.load('current',{packages':['corechart']});.lua jit图{宽度:800px;}.lua jit身材{背景色:白色;边界塌陷:崩塌;字体大小:14px;/*略大于分类器符号的画布高度。*/}.lua jit图形画布{垂直对齐:基线;valign:基线;文本对齐:左对齐;}.lua jit图形表{垂直对齐:中间;valign:中;左边距:自动;右边距:自动;文本对齐:左对齐;字体大小:14px;/*略大于分类器符号的画布高度。*/}.lua jit图td{空白:前置行;左填充:5倍;右填充:5px;余量:0px;}.lua jit图{背景色:黑色;颜色:白色;文本对齐:居中;左填充:5倍;右填充:5px;余量:0px;}.lua jit图tr{高度:70px;余量:0px;填充:0px;}.lua jit figure tr:第n个子级(偶数){背景色:F2F2F2F2;}.lua jit图.ljwrapper{高度:70px;显示:内联块;文本对齐:右;}.lua jit图.tdcenter{高度:70px;清楚:对;文本对齐:居中;垂直对齐:中间;valign:中;显示:表格单元格;余量:0px;填充:0px;}.lua jit图.tdright{高度:70px;清楚:对;文本对齐:右;垂直对齐:中间;valign:中;显示:表格单元格;余量:0px;填充:0px;}.lua jit图。直方图{高度:70px;宽度:100px;浮动:右;明确:两者兼而有之;垂直对齐:中间;valign:中;余量:0px;填充:0px;}#浅红色{背景色:#e88a8a;}#浅黄色{背景色:#e8e58a;}#浅绿色{背景色:#8ae89c;}符号键:坏的不一致的坏的不一致的,平坦平坦,好的不一致的好的不一致的,没有稳态没有稳态,减速减速,热身。基准分类稳定迭代(#)稳定迭代稳定性能阵列3Dslowdbinvalue00.610203.26740.0675060708090.067…2.0(2.0624.3)binvalue00.610203.26740.0675060708090.067…0.042(0.040,80.206)binvalue00.0671020.13330.1334050.06760.270.26780.06790.067…0.12863±0.000558二进制树FlatbinValue 00.1331020.06730.06740.13350.26760.06770.1338090.133…0.12564±0.000532弹跳平面值00.13310.13320.13330.1334050.06760.1337080.290.067…0.12795±0.000272capnproto嫒decodegood不一致(11个预热,4个平面)binvalue00.53310.0672030.06740.2506070.0678090.067…2.0(1.0,45.3)binvalue00.53310.0672030.06740.0675060.133708090.133…0.132(0.000,5.999)binvalue00.26710.220.33330.067405060708080.06790.067…0.13458±0.028466capnproto_encodegood不一致(14个预热,1个平面)binvalue00.0671020.06730.06740.26750.13360.270.0678090.133…155.0(52.8280.6)binvalue00.0671020.06730.06740.26750.13360.13370.13380.06790.067…34.137(11.476,57.203)binvalue00.1331003040506070.480.26790.2…0.21698±0.014541碰撞检测器不一致(12预热,2无稳态,1平)协同路由环板值00.33310.13320.06730.3334050.06760708090.067…0.10667±0.001527DeltableGood不一致(10个预热,5个平面)bin值00.66710203040.0675060708090.267…84.0(1.0022.9)binvalue00.66710203040.0675060708090.267…8.743(0.000106.802)binvalue00.26710.220.23040.06750.06760.133708090.067…0.10328±0.003195euler14warmupbinvalue00.933102030405060708090.067…60.0(60.0,83.0)binvalue00.933102030405060708090.067…5.537(5.483,7.680)binvalue00.66710.2672030405060708090.067…0.09180±0.000742Fankuch_reduxFlatbin值00.810.0672030405060708090.133…0.12093±0.001502FASTAFLATBIN值00.06710.13320.26730.240.13350.06760708090.133…0.12099±0.000376havlakbad不一致(9平,4无稳态,2减速)堆芯扁平件值00.533102030405060708090.467…1.01917±0.015674jsonlua_解码平台值00.8671020304050.06760708090.067…0.11279±0.012664jsonlua U编码平台值00.66710.133230.0674050.06760708090.067…0.12798±0.001761转向节总成失效00.410.420.06730.06740506070890.067…0.11662±0.000810救生圈不一致(12无稳态,3平)LuacheckFlatbin值00.410.42030.13340506708090.067…1.00901±0.089779不一致(13暖场,2平)binvalue00.13310.13320.230.06740.06740.06750.06750.06760.13370.06780.06790.067…244.0(1.0,652.2)binvalue00.13310.13320.230.06740.06750.06760.13370.06780.06780.06790.06790.06067…33.998(0.000,90.759)binval00.133100300304050.260.33370.33370.28090.133…0.09434±0.0128888(0.09434±0.012888)0.06760.13370.06780.06780.09434在LuafunwarmUpInvalue00.1331020.06730.2405060.06770.06780.290.267…54.0(12.4,70.6)二进制值00.1331020.06730.2405060.06770.13380.13390.267…9.015(1.935,11.587)二进制值00.06710.13320.13330.1334050.13360.1337080.290.067…0.16571±0.004918mandelbrotgood不一致(11平,4预热)binvalue00.733102030405060708090.267…1.0(1.0,29.0)binvalue00.733102030405060708090.267…0.000(0.000,9.750)binvalue00.26710.26720.230.1334050607080.06790.067…0.34443±0.000119mandelbrot_bitbad不一致(9平,6无稳态)MD5FlatbinValue 00.13310.33320.0673040.0675060.06770.13380.13390.067…0.11279±0.000040meteorwarmupbinvalue00.210203040506070.13380.290.467…16.0(2.0,18.0)binvalue00.210203040506070.26780.06790.467…3.398(0.284,3.840)binvalue00.13310030.240.1335060.06770.13380.06790.267…0.21935±0.003935moonscriptwarmupbinvalue00.73310.22030405060708090.067…28.0(13.1423.3)binvalue00.73310.22030405060708090.067…4.468(2.039,68.212)binvalue00.1331020.0673040.2675060.13370.280.06790.133…0.16175±0.001569NBodyFlatbin值00.33310.06720.3333040.133506070890.133…0.16024±0.002790nsievewarmupbinvalue00102030405160708090…2.0(2.0,2.0)二进制值00.210.06720.0673040.1335060.06770.280.06790.2…0.189(0.188,0.189)二进制值00.210.06720.06730.133405060.13370.13380.13390.133…0.17904±0.000641nsieve_bitwarmupbinvalue00.0671020304050.7336070.1338090.067…4.0(3.4,5.3)二进制值00.06710203040.33350.46070.1338090.067…0.272(0.219,0.386)binvalue00.33310.06720.0673040.0675060.06770.280.13390.067…0.08758±0.000054部分SUMSwarmUpInvalue00102030405160708090…2.0(2.0,2.0)二进制值00.7331020.0673040.06750.06760708090.067…0.160(0.160,0.163)二进制值00.7331020.0673040.06750.06760708090.067…0.14802±0.002044pidigitsgood不一致(11个平面,4个预热)binvalue00.7331020304050.260708090.067…1.0(1.0,2.3)binvalue00.73310203040.06750.13360708090.067…0.000(0.000,0.174)binvalue00.533102030405060708090.467…0.12689±0.002132queensgood不一致(14个平面,1个预热)binvalue00.933102030405060708090.067…1.0(1.0294.4)binvalue00.933102030405060708090.067…0.000(0.000,35.052)binvalue00.26710.26720.230.067405060.067708090.133…0.11838±0.000751quicksortbad不一致(8预热,7减速)binvalue00.3331020304050.260708090.467…3.0(2.0,4.0)binvalue00.33310203040.25060708090.467…0.600(0.315,0.957)binvalue00.46710.0672030405060708090.467…0.31117±0.067395半径或扁平件值00.1331020.2673040.0675060.26770.13380.06790.067…0.12732±0.000403raygood不一致(11平,4预热)binvalue00.73310203040506070.0678090.2…1.0(1.0355.0)binvalue00.733102