Skip to content

Commit d3c5d4b

Browse files
committed
Improved performance by checking has_canonical_format [skip ci]
1 parent fd74f78 commit d3c5d4b

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

‎pgvector/sparsevec.py‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,14 @@ def _from_sparse(self, arr: sparray | spmatrix, /) -> None:
119119
else:
120120
indices = value.col.tolist()
121121

122-
elements = sorted(zip(indices, value.data))
123-
124-
self._indices = [v[0] for v in elements]
125-
self._values = [float(v[1]) for v in elements]
122+
# spipy 1.12+
123+
if hasattr(value, 'has_canonical_format') and value.has_canonical_format:
124+
self._indices = indices
125+
self._values = [float(v) for v in value.data]
126+
else:
127+
elements = sorted(zip(indices, value.data))
128+
self._indices = [v[0] for v in elements]
129+
self._values = [float(v[1]) for v in elements]
126130

127131
def _from_dense(self, value: list[float] | ndarray, /) -> None:
128132
self._dim = len(value)

0 commit comments

Comments
 (0)