React native realm.write()中的循环,还是反过来?

React native realm.write()中的循环,还是反过来?,react-native,realm,React Native,Realm,我使用的是ES2015类模式模型: class Person { get fullName() { return this.firstName + ' ' + this.lastName; } } Person.schema = { name: 'Person', properties: { firstName: 'string', lastName: 'string' } }; 假设我有一个很长的人员列表,每个人员项目都将在一个循环中更新。我发现

我使用的是ES2015类模式模型:

class Person {
  get fullName() {
    return this.firstName + ' ' + this.lastName;
  }
}

Person.schema = {
  name: 'Person',
  properties: {
    firstName: 'string',
    lastName: 'string'
  }
};
假设我有一个很长的人员列表,每个人员项目都将在一个循环中更新。我发现在调试模式下,在循环中使用写块比在写块中使用循环快

更快:

componentDidMount(){
   realmWorker.addListener(()=>{
      console.log('from search screen');
   })
}

onClick=()=>{
   let persons = realm.objects('person');
   persons.forEach(person=>{
       realm.write(()=>{
          person.age++;
          // More complicated updates.
       })
   }) 
}
慢一点:

realm.write(()=>{

  let persons = realm.objects('person');
  persons.forEach(person=>{
      person.age++;
      // More complicated updates.
  }) 

})
但我读到,该文件倾向于尽可能少的写转换:

Note that write transactions have a non-negligible overhead; you should try to minimize the number of write blocks within your code.

那么我应该把整个循环放在写块中吗

写事务是原子事务,也就是说,要么全有,要么全无。这意味着事务中所做的更改应该是一个逻辑更改集。如果您更改了两个对象,并且需要在这两个对象之间保持某种一致性,那么这些更改应该在一个事务中完成。如果更改是独立的,那么更改可以(而且可能应该)在两个事务中完成

以上是理论:-)我们在文档中写的是交易是昂贵的。原因是事务必须获取锁,并且必须将更改写入存储


调试RN应用程序时,更改仍会写入存储器,但也会与调试器通信。这是一个缓慢的过程-例如,请参见。我最好的猜测是,由于应用程序/调试器通信开销,许多小事务在调试时都很慢。在现实场景中(用户使用你的应用程序-无需调试器),循环外的写事务将更快。

写事务是原子事务,也就是说,要么全有,要么全无。这意味着事务中所做的更改应该是一个逻辑更改集。如果您更改了两个对象,并且需要在这两个对象之间保持某种一致性,那么这些更改应该在一个事务中完成。如果更改是独立的,那么更改可以(而且可能应该)在两个事务中完成

以上是理论:-)我们在文档中写的是交易是昂贵的。原因是事务必须获取锁,并且必须将更改写入存储

调试RN应用程序时,更改仍会写入存储器,但也会与调试器通信。这是一个缓慢的过程-例如,请参见。我最好的猜测是,由于应用程序/调试器通信开销,许多小事务在调试时都很慢。在现实场景中(用户使用你的应用程序-没有调试器),循环外的写事务会更快