8

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

我注意到Svelte的评估脚本时间高于其他库(请参阅附图) 在此处输入图像描述

在示例中,我渲染了一个 100 x 15 的表格(总共 1500 个单元格)。虽然渲染时间减少了几毫秒,但 inferno 的脚本执行时间是它的一半。在此处输入图像描述

时间随着元素的数量急剧增加,例如。对于 15000 个细胞的苗条脚本评估时间是 2000 毫秒,而 inferno 需要 680 毫秒。

苗条的代码:

<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>

地狱示例代码:

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>
    );
  }
}

为什么 Svelte 的脚本评估时间很长?

4

1 回答 1

3

简短的回答是,我们在优化大型列表方面还没有做得特别好,而 Inferno(这完全是关于微优化并利用作者对 JS 引擎如何工作的深入了解)已经做到了。改进它在 TODO 列表中!

于 2019-11-10T14:55:03.467 回答