GithubHelp home page GithubHelp logo

Comments (6)

aeroxy avatar aeroxy commented on May 17, 2024

对于从无到有的数据,update的方法其实慢于setData,不精确的测试的结果是大概170ms vs 200ms这样。

from westore.

WebGuHui avatar WebGuHui commented on May 17, 2024

对于从无到有的数据,update的方法其实慢于setData,不精确的测试的结果是大概170ms vs 200ms这样。

对于已有的数据呢,因为update每次都需要遍历的diff一遍,然后还需要判断是否当前页面的数据而决定给多少个页面setData。

我这边关心的是diff是否真正有用,因为setData是黑盒,所以假如内部是在jscore的上层就构建virtualDom来diff,来判断哪些传给native层通知webview线程渲染的话,diff后最小颗粒度的setData可能并没有意义

from westore.

i7soft avatar i7soft commented on May 17, 2024

我的理解跟你差不多 @WebGuHui
我的理解是,不管 setData 是否经过 diff,page 每次都需要拿到完整的 data 来渲染整个virtualDom,然后此virtualDom和前一个进行 diff。由于 setData 是异步的,我也想不出什么方式才测试性能~

from westore.

dntzhang avatar dntzhang commented on May 17, 2024

update + diff 可以随意操作数据,并且保证小白随意 update 也写不出慢的程序。westore proxy 版本是最终形态,diff都没有,更改数据直接可以拿到 path。

from westore.

i7soft avatar i7soft commented on May 17, 2024

稍微研究过小程序在开发工具的appserver代码,setData 是每次操作后把数据放到一个队列的,之后再统一合并,并不会每次 setData 都 render 一次,这个有点类似 react.js 的 setState,所以分开写多个 setData 和一次性 setdata 理论上应该不差多少~~~

只是技术探讨,希望能在项目中尽快集成这么好的东西~~~

from westore.

aeroxy avatar aeroxy commented on May 17, 2024

setData 还是可以写成同步的,利用regeneratorRuntime可以这样写:

setDataSync = async (obj) => {
  const that = this
  return await new Promise(resolve => that.setData(obj, resolve) )
}

from westore.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.