Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 省道指数性能_Dart - Fatal编程技术网

Dart 省道指数性能

Dart 省道指数性能,dart,Dart,我想搜索fb3所在的索引。 我有两个类似的选项indexA和indexB。 是否存在性能差异,如A比B快或B比A快? 有没有更好的搜索fb3的方法 class Foo { String id; //unique int number; Foo(this.id, this.number); } class Bar { String id; //unique int number; Bar(this.id, this.number); } class FooBar { Foo fo

我想搜索
fb3
所在的索引。
我有两个类似的选项
indexA
indexB

是否存在性能差异,如A比B快或B比A快?
有没有更好的搜索fb3的方法

class Foo {
 String id; //unique
 int number;
 Foo(this.id, this.number);
}

class Bar {
 String id; //unique
 int number;
 Bar(this.id, this.number);
}

class FooBar {
 Foo foo;
 Bar bar;
 FooBar(this.foo, this.bar);
}

void main() {
  final Foo f = Foo('First Id', 18);
  final Bar b = Bar('Second Id', 81);
  final FooBar fb = FooBar(f, b);

  final Foo f2 = Foo('Third Id', 900);
  final Bar b2 = Bar('Fourth Id', 009);
  final FooBar fb2 = FooBar(f2, b2); 

  final Foo f3 = Foo('Fifth Id', 789);
  final Bar b3 = Bar('Sixth Id', 987);
  final FooBar fb3 = FooBar(f3, b3);  

  final Foo f4 = Foo('Seventh Id', 222);
  final Bar b4 = Bar('Eighth Id', 666);
  final FooBar fb4 = FooBar(f4, b4);

  final List<FooBar> fbs = [fb, fb2, fb3, fb4];

  final int indexA = fbs.indexWhere((FooBar fb) => fb.foo.id == fb3.foo.id && fb.bar.id == fb3.bar.id);
  final int indexB = fbs.indexWhere((FooBar fb) => fb == fb3);

}
class-Foo{
字符串id;//唯一
整数;
Foo(this.id,this.number);
}
分类栏{
字符串id;//唯一
整数;
条(此id,此编号);
}
福巴级{
富富,;
酒吧;
FooBar(this.foo,this.bar);
}
void main(){
最终Foo f=Foo('第一个Id',18);
最终钢筋b=钢筋(“第二个Id”,81);
最终FooBar fb=FooBar(f,b);
最终Foo f2=Foo('第三个Id',900);
最终钢筋b2=钢筋(“第四个Id”,009);
最终FooBar fb2=FooBar(f2,b2);
最终Foo f3=Foo('Fifth Id',789);
最终钢筋b3=钢筋(“第六Id”,987);
最终FooBar fb3=FooBar(f3,b3);
最终Foo f4=Foo(第七个Id),222;
最终钢筋b4=钢筋(“第八Id”,666);
最终FooBar fb4=FooBar(f4,b4);
最终列表fbs=[fb,fb2,fb3,fb4];
最终int indexA=fbs.indexWhere((FooBar fb)=>fb.foo.id==fb3.foo.id&&fb.bar.id==fb3.bar.id);
最终int indexB=fbs.indexWhere((FooBar fb)=>fb==fb3);
}

如果
Foo
Bar
FooBar
没有实现
操作符==
get hashCode
,那么
indexB
将只找到相同的实例

var a = Foo('Fifth Id', 789);
var b = Foo('Fifth Id', 789);
var c = a;
print(a == b); // false
print(a == c); // true
另见

如果实现了
operator==
,则不会有任何值得一提的性能差异。如果您实际上只想查找相同的实例,那么
indexB
会更快,但是使用

(FooBar fb) => identical(fb, fb3)