Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-125420: implementSequence.count API onmemoryview objects#125443

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation

@picnixz
Copy link
Member

@picnixzpicnixz commentedOct 14, 2024
edited by github-actionsbot
Loading

@picnixzpicnixz changed the titlegh-125420: addcount tomemoryview objectsgh-125420: implementSequence.count API onmemoryview objectsOct 14, 2024
Py_DECREF(iter);
returnNULL;
}
intcontained=PyObject_RichCompareBool(item,value,Py_EQ);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

list.count has a special case forif (item == value) count++. I suspect that helps significantly here too, because the value item will usually be an interned integer.

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Actually,PyObject_RichCompareBool has that fast path inside as well. I had the fast path before but then I wondered whether it was really needed or not (and I was a bit too lazy for benchmarkings). But I forgot about the interned integer case so it's probably faster.


Py_ssize_tcount=0;
PyObject*item=NULL;
while (PyIter_NextItem(iter,&item)) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

We could probably make this significantly more efficient by looking at the memory directly without materializing an iterator and all the elements.str.count is a similar example. However, that is going to be a lot more complicated, so it seems fine to skip it; if somebody wants to optimize this method later they can.

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Yes, that's what I suspected so I went for the simplest approach (at least to have the code around).

@JelleZijlstraJelleZijlstraenabled auto-merge (squash)December 10, 2024 02:52
@JelleZijlstraJelleZijlstra merged commit4331832 intopython:mainDec 10, 2024
41 checks passed
@picnixzpicnixz deleted the fix/memoryview-sequence-api-count-125420 branchDecember 10, 2024 10:13
srinivasreddy pushed a commit to srinivasreddy/cpython that referenced this pull requestJan 8, 2025
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@JelleZijlstraJelleZijlstraJelleZijlstra approved these changes

@corona10corona10Awaiting requested review from corona10

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

3 participants

@picnixz@JelleZijlstra@corona10

[8]ページ先頭

©2009-2025 Movatter.jp