Skip to content

Conversation

@ben-schwen
Copy link
Member

@ben-schwen ben-schwen commented Dec 27, 2025

Towards #635

Currently only supports deletion of i, but could also be integrated into dogroups.

Do we need/want a functional form like delete(x, irows). Depending on what we allow for irows this would need a rewrite/duplicate of the internals of [i evaluation.

@codecov
Copy link

codecov bot commented Dec 27, 2025

Codecov Report

❌ Patch coverage is 98.03922% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 98.96%. Comparing base (dc69b3d) to head (4888272).

Files with missing lines Patch % Lines
src/deleterows.c 97.50% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #7536      +/-   ##
==========================================
- Coverage   98.97%   98.96%   -0.01%     
==========================================
  Files          87       88       +1     
  Lines       16733    16822      +89     
==========================================
+ Hits        16561    16648      +87     
- Misses        172      174       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions
Copy link

github-actions bot commented Dec 27, 2025

No obvious timing issues in HEAD=delete_by_ref
Comparison Plot

Generated via commit 4888272

Download link for the artifact containing the test results: ↓ atime-results.zip

Task Duration
R setup and installing dependencies 2 minutes and 54 seconds
Installing different package versions 22 seconds
Running and plotting the test cases 4 minutes and 5 seconds

@jangorecki
Copy link
Member

What if columns are not marked as resizable? AFAIU delete rows will have to create a resizable copy in order to remove it. Right?
In such case I think we may want to provide a function to mark resizable explicitly, ahead of time, so further processing is more predicable.

// Parallel prefix sum (exclusive scan)
// Two-pass algorithm: first count per thread, then scan, then local prefix sum
static void computePrefixSum(const int *keep, int *dest, R_xlen_t n, int nthreads) {
if (nthreads == 1 || n < 10000) {
Copy link
Member

@jangorecki jangorecki Dec 28, 2025

Choose a reason for hiding this comment

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

It looks like a good place to use throttle threshold rather than hardcoded 10000.
Threshold is set to 1024, so maybe just 10*threshold instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants