-
-
Notifications
You must be signed in to change notification settings - Fork 5.7k
Create SwapWithoutTemp #1580
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
Create SwapWithoutTemp #1580
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This boils down to
a ^= b b ^= a // a ^ b ^ b = a a ^= b // a^b^a = b
This is a nifty trick to know when for some reason, you need to avoid temporary variables / registers at all costs. But even then it's not necessarily useful; on x86 for example, alternative instructions like XCHG
tend to be faster.
In JavaScript, it's not really useful; it will probably be slower than a normal swap. Also, there are no proper macros or similar; to make this function usable, you'd have to return [a, b]
, at which point you could just return [b, a]
to swap a and b.
Besides, this is missing documentation and tests (which would fail, since JS is pass by value). Leaning towards rejection. @raklaptudirm what do you think?
The xor trick might be good content educationally speaking. That said, this pr is definitely not up to the standards we require here and the API is faulty. I want to keep this pr open in case they can change the code and the API to work well because I would welcome the inclusion of this idea into the repo.
Open in Gitpod know more
Describe your change:
Checklist:
Example:
UserProfile.js
is allowed butuserprofile.js
,Userprofile.js
,user-Profile.js
,userProfile.js
are notFixes: #{$ISSUE_NO}
.