Svelte的“评估脚本”时间比地狱法显得更为重要

Dip*_*686 7 javascript performance infernojs svelte svelte-3

我正在尝试为我的项目选择一个提供数据绑定和DOM管理功能的库。比较多个库后,我最终选择了Inferno和Svelte

我注意到Svelte的评估脚本时间比其他库要长(请参阅附件图像) 在此处输入图片说明

在示例中,我绘制了一个100 x 15的表格(总共1500个单元格)。尽管渲染时间减少了几毫秒,但是inferno的脚本执行时间是它的一半。在此处输入图片说明

时间随着元素数量的增加而急剧增加,例如。对于15000个单元格苗条脚本,评估时间为2000ms,而inferno则为680ms。

苗条代码:

<style>
table,td,tr {
  border: 1px solid black;
}
</style>
<script>
import { officedatabase } from '../../../data_generator/sampleGridData/initialloaddata.js';
</script>
<table>
  {#each officedatabase as row}
    <tr>
     {#each row as cell}
      <td>{cell}</td>
     {/each}
    </tr>
  {/each}
</table>
Run Code Online (Sandbox Code Playgroud)

地狱样本代码:

import { Component } from 'inferno';
import { officedatabase } from './initialloaddata.js';
export default class Grid extends Component {
  state = {
    data: officedatabase
  };
  render () {
    let data = this.state.data,
      rows = data.map((row)=> {
        return (
        <tr class='row'>
          {row.map((ele)=>{
            return <td style='border: 1px solid black;'>{ele}</td>;
          })}
          </tr>
        );
      });
    return (
      <div>
        <table style='border: 1px solid black;'>
          {rows}
        </table>
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么此脚本评估时间对Svelte来说很高?

Ric*_*ris 3

简而言之,我们在优化大型列表方面还没有做得特别好,而 Inferno(主要是微优化并利用作者对 JS 引擎工作原理的深入了解)已经做到了。改进它是在待办事项清单上!