Skip to content

perf: vectorize grids.py and datasets.py#3

Open
k-yoshimi wants to merge 1 commit intomainfrom
perf/vectorize-datasets-grids
Open

perf: vectorize grids.py and datasets.py#3
k-yoshimi wants to merge 1 commit intomainfrom
perf/vectorize-datasets-grids

Conversation

@k-yoshimi
Copy link
Copy Markdown
Collaborator

Summary

  • Replace Python-level loops with NumPy vectorized operations in grids.py and datasets.py
  • BoxData initialization: 53x speedup (1.47s → 0.028s)
  • Data generation (1000 samples): 2x speedup (1.20s → 0.59s)

Changes

grids.py:

  • cartesian_grid: itertools.productnp.meshgrid
  • extract_inscribed_ball: per-point loop → vectorized norm + boolean mask
  • cartesian2polar: math.fmod loop → np.fmod

datasets.py:

  • set_arrays: per-point loop → array slicing + broadcasting
  • get_random_radial_params: double loop → outer product matrix op
  • generate_learning_data: per-sample computation → batch computation
  • params_to_boxdata: np.put loop → fancy indexing

Test plan

  • All 26 existing tests pass (test_grids.py + test_datasets.py)
  • Public API unchanged — same function signatures, same return types

🤖 Generated with Claude Code

Replace Python-level loops with NumPy vectorized operations:

grids.py:
- cartesian_grid: itertools.product → np.meshgrid
- extract_inscribed_ball: per-point loop → vectorized norm + boolean mask
- cartesian2polar: math.fmod loop → np.fmod

datasets.py:
- set_arrays: per-point loop → array slicing + broadcasting
- get_random_radial_params: itertools.product double loop → outer product matrix op
- generate_learning_data: per-sample params_to_boxdata → batch computation
- params_to_boxdata: np.put loop → fancy indexing

Results (l_max=3, rn_max=4, n_div=32):
- BoxData init: 1.47s → 0.028s (53x speedup)
- generate_learning_data(1000): 1.20s → 0.59s (2x speedup)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

1 participant