gpt4 book ai didi

java - 使用 Java 线程的 Android DualCore Handy LG Optimus 速度没有加速?

转载 作者:行者123 更新时间:2023-11-29 22:26:12 24 4
gpt4 key购买 nike

我在玩弄 LG LG P990 optimus 速度,发现使用多线程我根本无法获得任何加速。

我使用以下代码来测量某些计算所需的时间。

公共(public)类 TestThreads 扩展线程{

public void run()
{
double temp;
for(int i = 0; i < 5000000 ;i++)
{
temp = Math.random()*Math.random();
}
}

    long start = System.currentTimeMillis();
Thread t1 = new TestThreads();
Thread t2 = new TestThreads();
t1.start();
t2.start();
t1.join();
t2.join();

我与需要计算的结果时间进行比较

    for(int i = 0; i < 10000000 ;i++)
{
temp = Math.random()*Math.random();
}

由于 2 线程版本计算相同数量的循环,但分布在可能并行运行的 2 个线程上,我预计此版本会明显更快。然而,根本没有加速,在某些情况下,线程版本甚至更慢。我的想法/代码有问题还是 Android 没有在多个 CPU 内核上分配多个线程?

最佳答案

Math.random() 不是线程安全的,它有一个控制访问的互斥量,这会增加开销并减慢线程速度。您可以在这里阅读 http://code-o-matic.blogspot.com/2009/01/beware-of-hidden-contention-of.html

尝试做一些线程安全的事情。

关于java - 使用 Java 线程的 Android DualCore Handy LG Optimus 速度没有加速?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com