rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: jens.korinth@tuta.io
To: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Cc: FUJITA Tomonori <fujita.tomonori@gmail.com>,
	Rust For Linux <rust-for-linux@vger.kernel.org>,
	Ojeda <ojeda@kernel.org>, Alex Gaynor <alex.gaynor@gmail.com>,
	Boqun Feng <boqun.feng@gmail.com>, Gary <gary@garyguo.net>,
	Bjorn3 Gh <bjorn3_gh@protonmail.com>,
	Benno Lossin <benno.lossin@proton.me>,
	A Hindborg <a.hindborg@kernel.org>,
	Aliceryhl <aliceryhl@google.com>, Tmgross <tmgross@umich.edu>
Subject: Re: [PATCH v1] rust: Add pr_*_once macros
Date: Sun, 3 Nov 2024 23:29:29 +0100 (CET)	[thread overview]
Message-ID: <OAo8RFp--B-9@tuta.io> (raw)
In-Reply-To: <CANiq72n3bdNoYsSo47BGK2AJX_yhREoOxfKwkMBwz4v3bR-UHQ@mail.gmail.com>

> Hmm... Isn't this derived from what Jens was working on in Zulip? (Cc'd)
>
Looks very similar. But more importantly it's missing the hotpath improvement suggested by Boqun Feng, which improves the perfomance significantly:

@_**Boqun Feng|411647** [said](https://rust-for-linux.zulipchat.com/#narrow/channel/291565-Help/topic/warn_once.2Fdo_once_lite_if/near/478155223):
````quote
FWIW, you can do this:
```diff
diff --git a/benches/once_cmp.rs b/benches/once_cmp.rs
index 322e420..1bfc9cd 100644
--- a/benches/once_cmp.rs
+++ b/benches/once_cmp.rs
@@ -124,7 +124,7 @@ macro_rules! do_once_lite_if_abool_swap {
     ($cond:expr, $e:expr) => {
         #[link_section = ".data.once"]
         static ALREADY_DONE: AtomicBool = AtomicBool::new(false);
-        if $cond && !ALREADY_DONE.swap(true, Ordering::Relaxed) {
+        if $cond && !ALREADY_DONE.load(Ordering::Relaxed) && !ALREADY_DONE.swap(true, Ordering::Relaxed) {
             $e;
         }
     }
```
to improve the hotpath, because you don't need to xchg() each time after you set the flag.
````

Jens

  reply	other threads:[~2024-11-03 22:36 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-03  3:05 [PATCH v1] rust: Add pr_*_once macros FUJITA Tomonori
2024-11-03 16:38 ` Dirk Behme
2024-11-04  1:48   ` FUJITA Tomonori
2024-11-03 16:41 ` Miguel Ojeda
2024-11-03 22:29   ` jens.korinth [this message]
2024-11-04  2:15     ` FUJITA Tomonori
2024-11-04  6:08       ` Boqun Feng
2024-11-04  2:08   ` FUJITA Tomonori
2024-11-04 15:44     ` Miguel Ojeda
2024-11-04 22:08       ` jens.korinth
2024-11-04 22:20         ` Boqun Feng
2024-11-04 23:33         ` FUJITA Tomonori
2024-11-05 20:20           ` Miguel Ojeda
2024-11-05 23:33             ` FUJITA Tomonori
2024-11-05 20:35         ` Miguel Ojeda
2024-11-05 23:31           ` FUJITA Tomonori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=OAo8RFp--B-9@tuta.io \
    --to=jens.korinth@tuta.io \
    --cc=a.hindborg@kernel.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=fujita.tomonori@gmail.com \
    --cc=gary@garyguo.net \
    --cc=miguel.ojeda.sandonis@gmail.com \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tmgross@umich.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).