对于React Native,领域内的代码是否有任何性能损失?

时间:2016-05-31 00:54:56

标签: react-native realm

我有一个很大的开关案例,每个案例都做了一些工作,将制作特定数据库对象所需的东西拉到一起,然后realm.create对象。确保持久性的最简单方法是将整个开关/盒子放入realm.write中。这会减慢每个案例中运行的代码的速度吗?

realm.write(() => {
  let x, y;
  switch (condition) {
    case 'x':
      x = //some work to generate the x object
      realm.create('X', x);
      break;
    case 'y':
      y = // some work to generate the y object
      realm.create('Y', y);
      break;
  }
});

另一种方法是简单地使用一个变量来保持箭头函数,无论使用什么情况创建,并在最后用该箭头函数调用realm.write。很高兴这样做,但对是否有任何好处感到好奇。

let x, y, writeFunc;
switch (condition) {
  case 'x':
    x = //some work to generate the x object
    writeFunc = () => realm.create('X', x);
    break;
  case 'y':
    y = // some work to generate the y object
    writeFunc = () => realm.create('Y', y);
    break;
}
realm.write(writeFunc);

1 个答案:

答案 0 :(得分:2)

您的两个代码示例都将执行大致相同的操作。在你的写块中执行其他代码是没问题的,所以我会选择最干净/最简单的选项。

在考虑性能时,您唯一需要担心的是拥有太多交易。理想情况下,您应该最小化您拥有的事务数量,并在单个写入事务中批量处理多个操作(创建,变异,删除),而不是为每个操作设置事务。当同时编写多个对象时,事情可以显着加快,如果您执行许多操作,那么对它们进行批处理会对性能产生实际影响。