CMA-ES / moarchiving

A bi-objective nondominated archive class
Other
2 stars 3 forks source link

Overwriting __contains__ #5

Open nikohansen opened 2 years ago

nikohansen commented 2 years ago

The BiobjectiveNondominatedSortedList class should overwrite __contains___ when the list is (very) long with something like

idx = self.bisect_left(f_pair)
return idx < len(self) and self[idx] == f_pair

https://docs.python.org/3/reference/datamodel.html#object.__contains__

We may also consider to inherit from sortedcontainers.SortedList instead of list (though we cannot useupdate to implement add_list).

We should first check whether and when we actually get a relevance performance gain, as Python's in seems to be very fast (80ns with 1 million entries).