История изменений
Исправление steemandlinux, (текущая версия) :
У вас debug для ржавого включен. И у меня на атомиках ржавой быстрее на 20%:
use std::sync::{
Arc,
atomic::{AtomicUsize, Ordering},
};
use std::thread;
fn main() {
let counter = Arc::new(AtomicUsize::new(0));
let mut handles = Vec::new();
for _ in 0..4 {
let c = Arc::clone(&counter);
handles.push(thread::spawn(move || {
for _ in 0..1_000_000 {
c.fetch_add(1, Ordering::Relaxed);
}
}));
}
for h in handles { h.join().unwrap(); }
println!("counter = {}", counter.load(Ordering::Relaxed));
}
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
[package]
name = "atomics-rust"
version = "0.1.0"
edition = "2021"
[dependencies]
40 ms против 50 ms.
А ещё размер таким образом нечестно сравнивать. У него свой std.
Исправление steemandlinux, :
У вас debug для ржавого включен. И у меня на атомиках ржавой быстрее на 20%:
use std::sync::{
Arc,
atomic::{AtomicUsize, Ordering},
};
use std::thread;
fn main() {
let counter = Arc::new(AtomicUsize::new(0));
let mut handles = Vec::new();
for _ in 0..4 {
let c = Arc::clone(&counter);
handles.push(thread::spawn(move || {
for _ in 0..1_000_000 {
c.fetch_add(1, Ordering::Relaxed);
}
}));
}
for h in handles { h.join().unwrap(); }
println!("counter = {}", counter.load(Ordering::Relaxed));
}
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
[package]
name = "atomics-rust"
version = "0.1.0"
edition = "2021"
[dependencies]
40 ms против 50 ms.
А ещё размер таким образом нечестно сравнивать.
Исправление steemandlinux, :
У вас debug для ржавого включен. И у меня на атомиках ржавой быстрее на 20%:
use std::sync::{
Arc,
atomic::{AtomicUsize, Ordering},
};
use std::thread;
fn main() {
let counter = Arc::new(AtomicUsize::new(0));
let mut handles = Vec::new();
for _ in 0..4 {
let c = Arc::clone(&counter);
handles.push(thread::spawn(move || {
for _ in 0..1_000_000 {
c.fetch_add(1, Ordering::Relaxed);
}
}));
}
for h in handles { h.join().unwrap(); }
println!("counter = {}", counter.load(Ordering::Relaxed));
}
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
[package]
name = "atomics-rust"
version = "0.1.0"
edition = "2021"
[dependencies]
40 ms против 50 ms.
Исправление steemandlinux, :
У вас debug для ржавого включен. И у меня на атомиках ржавой быстрее на 20%:
use std::sync::{
Arc,
atomic::{AtomicUsize, Ordering},
};
use std::thread;
fn main() {
let counter = Arc::new(AtomicUsize::new(0));
let mut handles = Vec::new();
for _ in 0..4 {
let c = Arc::clone(&counter);
handles.push(thread::spawn(move || {
for _ in 0..1_000_000 {
c.fetch_add(1, Ordering::Relaxed);
}
}));
}
for h in handles { h.join().unwrap(); }
println!("counter = {}", counter.load(Ordering::Relaxed));
}
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
[package]
name = "atomics-rust"
version = "0.1.0"
edition = "2021"
[dependencies]
Исходная версия steemandlinux, :
У вас debug для ржавого включен.