Skip to content

Conversation

@aothms
Copy link
Collaborator

@aothms aothms commented Nov 4, 2025

  1. Implement MAX_ERROR_COUNT in handle_then() to terminate processing when an amount of errors has already been generated for a feature (we don't show them in the UI, no consequences on score cards)
  2. Implement a light weight DTO / dataclass equivalent of ValidationOutcome not tied to django orm that is more light weight in memory (i.e __slots__, less intelligence, string interning).

Evaluation on ~18mb file

before

mem_plot_20251104_123325_dev_branch

after

mem_plot_20251104_131117_perf_branch_w_max10

Next steps

Running rules individually. Interestingly gives the same pronounced patterns on individual rules. Looking into these now.

find features/ -name '*.feature' -exec python -m behave --no-capture -v {} --define input=/mnt/c/Users/tkrij/Documents/AECgeeks/projects/buildingsmart/validate/backend/.dev/files_storage/Duplex_MEP_20110907.ifc --define task_id=4334 --define execution_mode=ExecutionMode.PRODUCTION ;

mem_plot_20251104_135022
rule max mem (mb) runtime (s)
ifc105 [30178] 504.26953125 18.737269928999012
ctx000 [29484] 483.46875 16.87474232800014
brp001 [29362] 472.46484375 47.58386559099017
pse002 [30665] 427.79296875 8.861968547003926
gem111 [29786] 415.2421875 7.811844519004808

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