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)