小编Але*_*ков的帖子

为什么Rust中的对数比Java慢?

如果我在Rust中运行这些基准测试:

#[bench]
fn bench_rnd(b: &mut Bencher) {
    let mut rng = rand::weak_rng();
    b.iter(|| rng.gen_range::<f64>(2.0, 100.0));
}

#[bench]
fn bench_ln(b: &mut Bencher) {
    let mut rng = rand::weak_rng();
    b.iter(|| rng.gen_range::<f64>(2.0, 100.0).ln());
}
Run Code Online (Sandbox Code Playgroud)

结果是:

test tests::bench_ln             ... bench:        121 ns/iter (+/- 2)
test tests::bench_rnd            ... bench:          6 ns/iter (+/- 0)
Run Code Online (Sandbox Code Playgroud)

每次ln通话121-6 = 115 ns .

但是Java中的相同基准:

@State(Scope.Benchmark)
public static class Rnd {
    final double x = ThreadLocalRandom.current().nextDouble(2, 100);
}

@Benchmark
public double testLog(Rnd rnd) {
    return Math.log(rnd.x);
}
Run Code Online (Sandbox Code Playgroud)

给我:

Benchmark …
Run Code Online (Sandbox Code Playgroud)

java floating-point microbenchmark rust jmh

16
推荐指数
2
解决办法
1335
查看次数

在Rust中编写双重检查锁定的正确方法是什么?

我发现了这篇文章,但它看起来不对,因为Cell它不能保证set()锁定和锁定之间的同步get().

是否Atomic_.store(true, Ordering::Release)影响其他非原子写操作?

我试着写它AtomicPtr看起来接近Java风格,但它失败了.AtomicPtr在这种情况下,我找不到正确使用的例子.

concurrency double-checked-locking rust

8
推荐指数
1
解决办法
484
查看次数

如何查看JMH中的调用树分析?

我想分析JMH测试并查看像VisualVM中一样的调用树。但是,当我使用StackProfiler时,它为我提供了诸如此类的本机方法,这对我而言完全没有用。

....[Thread state distributions]....................................................................
 59,9%         TIMED_WAITING
 23,0%         WAITING
 17,0%         RUNNABLE

....[Thread state: TIMED_WAITING]...................................................................
 47,3%  78,9% sun.misc.Unsafe.park
  8,3%  13,8% java.lang.Thread.sleep
  4,4%   7,3% java.lang.Object.wait

....[Thread state: WAITING].........................................................................
 21,9%  95,1% sun.misc.Unsafe.park
  1,1%   4,9% java.lang.Object.wait

....[Thread state: RUNNABLE]........................................................................
 13,5%  79,0% sun.nio.ch.EPollArrayWrapper.epollWait
  2,0%  11,5% java.net.SocketInputStream.socketRead0
  1,0%   5,7% java.net.PlainSocketImpl.socketAccept
Run Code Online (Sandbox Code Playgroud)

java profiler profiling microbenchmark jmh

2
推荐指数
1
解决办法
1057
查看次数