Skip to content
This repository has been archived by the owner on Jul 21, 2024. It is now read-only.

Optimize calculate_disp_pixels for faster displacement calculation #329

Merged
merged 2 commits into from
Feb 2, 2021

Conversation

Upliner
Copy link
Contributor

@Upliner Upliner commented Feb 1, 2021

My displacement calculation algorithm is faster and uses less memory

  1. multiply_images function doesn't seem to be used anywhere so I removed it
  2. pixels.foreach_get() is much faster than np.array(pixels)
  3. I use in-place array modifications such as += and *= to get rid of excessive data copying and memory allocations
  4. reshape(-1) is faster than flatten() and doesn't allocate additional memory

As a result my version is 2x faster, and calculate_disp_pixels function is 18x faster

Before:

2021-02-01 17:50:40,307 INFO: MB-Lab.materialengine - calculate_disp_pixels - 155 - start: calculate_disp_pixels human_female_displacement.png
2021-02-01 17:50:44,805 INFO: MB-Lab.materialengine - calculate_disp_pixels - 164 - finish: calculate_disp_pixels human_female_displacement.png
2021-02-01 17:50:48,840 INFO: MB-Lab.materialengine - calculate_displacement_texture - 314 - Displacement calculated in 8.53285837173462 seconds

After:

2021-02-01 17:42:59,544 INFO: MB-Lab.materialengine - calculate_disp_pixels - 155 - start: calculate_disp_pixels human_female_displacement.png
2021-02-01 17:42:59,784 INFO: MB-Lab.materialengine - calculate_disp_pixels - 172 - finish: calculate_disp_pixels human_female_displacement.png
2021-02-01 17:43:03,849 INFO: MB-Lab.materialengine - calculate_displacement_texture - 312 - Displacement calculated in 4.30582857131958 seconds

@Upliner
Copy link
Contributor Author

Upliner commented Feb 1, 2021

UPD: now I also use foreach_set and now displacement calculation is really fast!

2021-02-01 18:17:39,929 INFO: MB-Lab.materialengine - calculate_disp_pixels - 155 - start: calculate_disp_pixels human_female_displacement.png
2021-02-01 18:17:40,195 INFO: MB-Lab.materialengine - calculate_disp_pixels - 172 - finish: calculate_disp_pixels human_female_displacement.png
2021-02-01 18:17:40,230 INFO: MB-Lab.materialengine - calculate_displacement_texture - 313 - Displacement calculated in 0.3054218292236328 seconds

@animate1978 animate1978 merged commit bc63028 into animate1978:dev Feb 2, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants