Skip to content
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

⚡ Prefer built-in conversions over extensibility for perf #1049

Merged
merged 8 commits into from
Aug 4, 2022

Conversation

tmilnthorp
Copy link
Collaborator

@tmilnthorp tmilnthorp commented Feb 16, 2022

Fixes #1069

Per @lipchev's comments in #1023, I decided to add the local conversion method back (as private TryToUnit). This will allow better performance for auto-generated conversions before falling back to the extensibility points.

@codecov
Copy link

codecov bot commented Feb 16, 2022

Codecov Report

Merging #1049 (21eca5f) into master (ee058dc) will increase coverage by 0%.
The diff coverage is 97%.

@@           Coverage Diff            @@
##           master   #1049     +/-   ##
========================================
  Coverage      85%     85%             
========================================
  Files         322     322             
  Lines       49261   52319   +3058     
========================================
+ Hits        42075   44893   +2818     
- Misses       7186    7426    +240     
Impacted Files Coverage Δ
...t/GeneratedCode/Quantities/LinearPowerDensity.g.cs 89% <ø> (+<1%) ⬆️
UnitsNet/GeneratedCode/Quantities/Luminance.g.cs 85% <ø> (+<1%) ⬆️
UnitsNet/GeneratedCode/Quantities/Luminosity.g.cs 86% <ø> (+<1%) ⬆️
...nitsNet/GeneratedCode/Quantities/LuminousFlux.g.cs 77% <ø> (-1%) ⬇️
...et/GeneratedCode/Quantities/LuminousIntensity.g.cs 77% <ø> (-1%) ⬇️
...itsNet/GeneratedCode/Quantities/MagneticField.g.cs 83% <ø> (+<1%) ⬆️
...nitsNet/GeneratedCode/Quantities/MagneticFlux.g.cs 77% <ø> (-1%) ⬇️
...itsNet/GeneratedCode/Quantities/Magnetization.g.cs 77% <ø> (-1%) ⬇️
UnitsNet/GeneratedCode/Quantities/Mass.g.cs 91% <ø> (+<1%) ⬆️
...et/GeneratedCode/Quantities/MassConcentration.g.cs 92% <ø> (+<1%) ⬆️
... and 218 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

@tmilnthorp
Copy link
Collaborator Author

@angularsen I will fill in some missing test coverage in this PR.

Also, is there a way to run the branch marking suite on a PR? It would be nice to see proactively rather than after something is already merged.

@tmilnthorp tmilnthorp changed the title Use local switch to do conversions rather than extensibility framework Use local method to do auto-gen conversions before falling back to UnitConverter for extensibility Feb 17, 2022
@tmilnthorp
Copy link
Collaborator Author

Alright. Looks good now.

Can we add the benchmarking as an optional check that has to be manually run?

@angularsen
Copy link
Owner

Alright. Looks good now.

Can we add the benchmarking as an optional check that has to be manually run?

I don't know how to do that? :D
The checks are optional, the PR can be merged even if they are red.
I believe you can re-trigger the checks via the Checks tab.

I just reduced the codecov precision from 1 to 0, and changed rounding from up to down (default).
Hoping this reduces the pesky failed checks on -0.0 or -0.1% diff.
a2b92ab

@angularsen
Copy link
Owner

Oh, I didn't read your question right.
Benchmarking, yes I guess we can make it optional. To be honest, I haven't paid much attention to them because we found that the results varied alot from run to run due to running on different VMs I guess.

@angularsen
Copy link
Owner

@tmilnthorp I disabled the auto benchmarking action. There is another action to manually run benchmarks.
https://github.com/angularsen/UnitsNet/actions

@stale
Copy link

stale bot commented Apr 21, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the wontfix label Apr 21, 2022
@stale stale bot closed this Apr 28, 2022
@angularsen
Copy link
Owner

@tmilnthorp I'm reopening this in light of #1069 .

I think maybe a fair compromise is to merge this PR, and not allow extensions to override built-in functions to mitigate performance issue. I'm not sure I see a good usecase to override built-in functions except to duct-tape fix bugs, but I would rather merge those fixes into the library.

What do you think?

@angularsen angularsen reopened this May 22, 2022
@stale stale bot removed the wontfix label May 22, 2022
@stale
Copy link

stale bot commented Jul 31, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added wontfix and removed wontfix labels Jul 31, 2022
# Conflicts:
#	UnitsNet/GeneratedCode/Quantities/ElectricConductivity.g.cs
#	UnitsNet/GeneratedCode/Quantities/Length.g.cs
#	UnitsNet/GeneratedCode/Quantities/Molarity.g.cs
#	UnitsNet/GeneratedCode/Quantities/Power.g.cs
#	UnitsNet/GeneratedCode/Quantities/Pressure.g.cs
#	UnitsNet/GeneratedCode/Quantities/SpecificEnergy.g.cs
#	UnitsNet/GeneratedCode/Quantities/Speed.g.cs
#	UnitsNet/GeneratedCode/Quantities/ThermalResistance.g.cs
@angularsen angularsen changed the title Use local method to do auto-gen conversions before falling back to UnitConverter for extensibility ⚡ Prefer built-in conversions over extensibility for perf Aug 4, 2022
@angularsen angularsen merged commit 1abfdea into angularsen:master Aug 4, 2022
@angularsen
Copy link
Owner

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.

Performance hit by commit 'Use UnitConverter to do conversion functions (e5aba5b)'
2 participants